使用python操作XML增刪改查
什么是XML?
- XML 指可擴展標記語言(EXtensible Markup Language)
- XML 是一種標記語言,很類似 HTML
- XML 的設計宗旨是傳輸數據,而非顯示數據
- XML 標簽沒有被預定義。您需要自行定義標簽。
- XML 被設計為具有自我描述性。
- XML 是 W3C 的推薦標准
參考文獻
導入模塊
import xml.etree.ElementTree as ET
讀取解析XML
可以從xml文件、字符串中解析
新建一個xml文件
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>張三</name>
<age>18</age>
<score>89</score>
</student>
<student>
<name>李四</name>
<age>19</age>
<score>81</score>
</student>
<student>
<name>王五</name>
<age>17</age>
<score>92</score>
</student>
</students>
從xml文件中讀取,使用getroot()獲取根節點,得到的是一個Element對象
tree = ET.parse('students.xml')
root = tree.getroot()
從字符串變量中讀取,返回的是Element對象
root = ET.fromstring(country_data_as_string)
訪問XML
每個Element都有以下屬性
#tag = element.text #訪問Element標簽
#attrib = element.attrib #訪問Element屬性
#text = element.text #訪問Element文本
for element in root.findall('student'):
tag = element.tag #訪問Element標簽
attrib = element.attrib #訪問Element屬性
text = element.find('name').text #訪問Element文本
print(tag, attrib, text)
print(root[0][0].text) #子節點是嵌套的,我們可以通關索引訪問特定的子節點
查找元素
Element 提供了一些方法來幫助我們對他的子節點進行遍歷
1、Element.iter()
for student in root.iter('student'):
print student[0].text
out:
張三
李四
王五
2、Element.findall()
for element in root.findall('student'):
name = element.find('name').text
age = element.find('age').text
score = element.find('score').text
print name,age,score
out:
張三 18 89
李四 19 81
王五 17 92
修改XML
- ElementTree.write()將構建的XML文檔寫入文件。
- Element.text = '' 直接改變字段內容
- Element.append(Element) 為當前的Elment對象添加子對象
- Element.remove(Element) 刪除Element節點
- Element.set(key, value) 添加和修改屬性
- ElementTree.write('filename.xml') 寫出(更新)XMl文件
創建XML
- ElementTree.Element() 構建一個節點
- ElementTree.SubElement(Element,tag) 構建一個子節點
a = ET.Element('a')
b = ET.SubElement(a, 'b')
c = ET.SubElement(a, 'c')
print ET.dump(a)
out:
<a><b /><c /></a>
總結
最近寫東西需要都輸出xml,所以學習了XML以及XML在python的使用。更多內容可以看官方文檔。
