python模組之xml
阿新 • • 發佈:2018-11-10
xml模組
- xml結構
xml是種實現不同語言或程式之間進行資料交換的協議,跟json差不多,但沒json使用簡單。但是因為歷史遺留問題,至今很多行業依然使用xml這種資料格式。
xml的格式如下,是通過<>節點來區別資料結構的。
<?xml version="1.0" encoding="utf-8"?> <friendsinfo> <frd age="22" name="任盼晨"> <info qq="1114893928" wechat="Dmgwood" /> </frd> <frd age="22" name="袁靖"> <info qq="2410152779" wechat="wxid_2vykc0sjoiie21" /> </frd> <frd age="22" name="衛一帆"> <info qq="97280940" wechat="oOC" /> </frd> <frd age="22" name="胡文濤"> <info qq="2522864970" wechat="hu2522864970" /> </frd> </friendsinfo>
- 語法結構
- 任何的起始標籤都必須有一個結束標籤。 <> </>
- 可以採用另一種簡化語法,可以在一個標籤中同時表示起始和結束標籤。這種語法是在大於號之前緊跟一個斜槓(/),例如,解析器會將其翻譯成
- 標籤必須按合適的順序進行巢狀,所以結束標籤必須按映象順序匹配起始標籤。這好比將起始和結束標籤看作是數學中的左右羅浩:在沒有關閉所有的內部括號之前,是不能關閉外面括號的。
- 所有的特性都必須有值。
- 所有的特性都必須在值得周圍加上雙引號。
- 一個標籤的組成部分包括:標籤名、屬性名以及屬性值、還有文字內容(可以沒有)
雙標籤的寫法:
<tagename '屬性名稱'="屬性值">文字內容</tagname>
單標籤的寫法:
<tagename 屬性名稱="屬性值"/>
總結:xml也是一種中間格式,也屬於序列化方式之一,與json比較,同樣的資料json會更小,效率更高;xml需要根據文件結構手動解析,而json直接可以轉為python資料物件。
- xml模組用法
# d.xml <?xml version="1.0" encoding="utf-8"?> <studentinfo> <stu age="20" name="張三"> <girlfriend age="19" name="張三的女朋友" /> </stu> <stu age="20" name="李四"> <girlfriend age="19" name="李四的女朋友" /> </stu> <age num="1"> <age num="2"> <age num="3"> </age> </age> </age> <age> </age> </studentinfo>
import xml.etree.ElementTree as ElementTree
tree = ElementTree.parse('d.xml')
rootTree = tree.getroot()
# 三種獲取標籤的方式
# 1. 獲取所有人的年齡,iter用於在全文範圍獲取標籤
for item in rootTree.iter('age'):
# 一個標籤三個組成部分
print(item.tag) # 標籤名稱
print(item.attrib) # 標籤的屬性
print(item.text) # 文字內容
# 2. 從當前標籤的子標籤中找到一個名稱為age的標籤,如果有多個,找到的是第一個
print(rootTree.find('age').attrib)
# 3. 從當前標籤的子標籤中找到所有名稱為age的標籤
print(rootTree.findall('age'))
# 獲取單個屬性
stu = rootTree.find('stu')
print(stu.get("age"))
print(stu.get("name"))
# 刪除子標籤
rootTree.remove(stu)
# 新增子標籤
newTag = ElementTree.Element('這是新標籤', {'一個屬性': '值'})
rootTree.append(newTag)
# 寫入檔案
tree.write('f.xml', encoding='utf-8')