實(shí)用快速讀取Xml文件的模塊elementTree!!
引言:Xml是一種層級(jí)化的樹狀結(jié)構(gòu),可以引用樹狀結(jié)構(gòu)表示
1. 導(dǎo)入
import xml.etree.ElementTree as ET
2. 從文件中讀取xml
tree = ET.parse("xxx.xml")
# 獲取Xml文件的根節(jié)點(diǎn),是一個(gè)Element對(duì)象
root = tree.getroot()
如果是xml文件是字符串的形式:
root = ET.formstring(xxxx)
3. Element 對(duì)象常用的屬性:
Element.tag--輸出標(biāo)簽的名稱
Element.text -- 輸出標(biāo)簽包含的內(nèi)容
Element.attrib -- 標(biāo)簽的屬性,以鍵值對(duì)的形式存在
4. 查找Xml元素
方法一:
通過遞歸的方式,遍歷根節(jié)點(diǎn)的所有子元素,獲取樹中所有的元素
for child_root in root:
print(child_root.tag, child_root.text, child_root.attrib)
方法二:
使用Element.iter()方法遍歷tree的所有元素
for elem in root.iter():
print(elem.tag,elem.attrib)
ElementTree 對(duì)象常用的方法如下:
1> find 返回第一個(gè)匹配的子元素
2> findall 以列表的形式返回所有匹配的子元素(同一級(jí)的)
3> 返回一個(gè)所有匹配元素的迭代器(iterator)
方法三: 通過Xpath查找元素
Xpath 使用例子:
1. 返回所有tag為article的元素:
findall("article")
2. 返回 tag為article下之下所有tag為algorithm的元素,注意格式必須為 父節(jié)點(diǎn)/一代子節(jié)點(diǎn),而不能為父節(jié)點(diǎn)/二代子節(jié)點(diǎn),比如article/interval 就會(huì)找不到
findall(article/algorithm)

浙公網(wǎng)安備 33010602011771號(hào)