xml 模組
阿新 • • 發佈:2018-11-11
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")