常用模塊——xml模塊
阿新 • • 發佈:2018-10-17
內容 element 直接 pri end 結構 odin 1.0 屬性
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‘)#寫入文件
常用模塊——xml模塊