常用模組——xml模組
阿新 • • 發佈:2018-11-11
XML 可擴充套件標記語言
格式:<></>
也是一種通用的資料格式
之所以用它是因為塊平臺性。
語法格式
一、任何的起始標籤都必須有⼀一個結束標籤。
<> </>
二、可以採用另一種簡化語法,可以在一個標籤中同時表示起始和結束標
籤。這種語法是在⼤於符號之前緊跟一個斜線(/),XML
解析器會將其翻譯成<百度百科詞條></百度百科詞條>。
例例如<百度百科詞條/>。
三、標籤必須按合適的順序進⾏行行巢狀,所以結束標籤必須按映象順序匹配
起始標籤。這好⽐比是將起始和結束標籤看作是數學中的左右括號:在沒有關閉所有
的內部括號之前,是不不能關閉外⾯面的括號的。
四、所有的特性都必須有值。
五、所有的特性都必須在值的周圍加上雙引號。
一個標籤的組成部分:
<tagename 屬性名="屬性值">文字內容</tagename>
單標籤的寫法
<tagename 屬性名 = "屬性值"/>
映象關閉順序例項
<a> <b> <c> </c> </b> </a>
資訊寫成xml
<studentinfo> <張三> <age>20</age><gender>man</gender> </張三> <李四> <age>20</age> <gender>man</gender> </李四> </studentinfo>
總結
xml也是一種中間格式,也是屬於序列化方式之一。
與json相比較
同樣資料 json會比xml更小,效率更高
xml需要根據文件結構手動解析,而json直接轉物件。
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> </studentinfo>
解析xml
import xml.etree.ElementTree as ElementTree #解析d,xml tree = ElementTree.parse('d.xml') print(tree)#<xml.etree.ElementTree.ElementTree object at 0x0000000002429BA8> rootTree=tree.getroot()#獲得根標籤 print(rootTree)#<Element 'studentinfo' at 0x00000000023DBA48>
獲得根標籤下子標籤三種方式:
iter("tagname")
# 種獲取標籤的方式 # 獲取所有人的年齡 iter是用於在全文範圍獲取標籤 for item in rootTree.iter("age"): print(item.tag) print(item.attrib) print(item.text)
結果
age
{'name': '1'}
age
{'name': '2'}
find()只是找到第一個標籤
print(rootTree.find('age').attrib) #{'name': '1'}
findall()找到所有符合標籤名
print(rootTree.findall('age').__iter__().__next__().attrib) #{'name': '1'}
獲得單個屬性
stu = rootTree.find("stu") print(stu.get("age")) print(stu.get("name"))
刪除子標籤
rootTree.remove(stu)
建立新的標籤
new = ElementTree.Element('new_tag',{'屬性名':111}) rootTree.append(new) tree.write('f.xml',encoding='utf-8')#寫入檔案