1. 程式人生 > >常用模組——xml模組

常用模組——xml模組

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')#寫入檔案