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

常用模塊——xml模塊

內容 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模塊