1. 程式人生 > >xml 模塊

xml 模塊

utf iter 之一 new port ott name 有關 man

xml 可擴展的標記語言

<> </>

也是一種通用的數據格式

之所以用它也是因為跨平臺 (但是在json出現之前就已經存在,所以海有一些公司還在用)

學習的重點還是語法格式

  1.任何的起始標簽都必須有一個結束標簽。 <> </>

  2.可以采用另一種簡化語法,可以在一個標簽中同時表示起始和結束標簽。這種語法是在大於符號之前緊跟一個斜線(/),解釋器會將其翻譯成<百度百科詞條></百度百科詞條>。

<百度百科詞條/>

  3.標簽必須按合適的順序進行行行嵌套,所以結束標簽必須按鏡像順序匹配起始標簽。 這好比是將起始和結束標簽看作是數學中的左右括號: 在沒有關閉所有的內部括號之前,是不能關閉外面的括號的

  4.所有的特性都必須有值

  5.所有的特性都必須在值的周圍加上雙引號。

  一個標簽的組成部分

  <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 直接轉對象

import xml.etree.ElementTree as ElementTree
# 解析d.xml
tree = ElementTree.parse("d.xml")
print(tree)
# 獲取根標簽
rootTree = tree.getroot()

# 三種獲取標簽的方式
# 獲取所有人的年齡 iter是用於在全文範圍獲取標簽
# for item in rootTree.iter("age"):

# # 一個標簽三個組成部分
# print(item.tag) # 標簽名稱
# print(item.attrib) # 標簽的屬性
# print(item.text) # 文本內容

# 第二種 從當前標簽的子標簽中找到一個名稱為age的標簽 如果有多個 找到的是第一個
# print(rootTree.find("age").attrib)
# 第三種 從當前標簽的子標簽中找到所有名稱為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")

xml 模塊