一、代码
XML文件如下:
<doc>
<branch name="codingpy.com" hash="1cdf045c">
text,source
</branch>
<branch name="release01" hash="f200013e">
<sub-branch name="subrelease01">
xml,sgml
</sub-branch>
</branch>
<branch name="invalid">
</branch>
</doc>
import xml.etree.cElementTree as cET
etree = cET.ElementTree(file= './datas/sourceFile/test_ceshi.xml')
# 获取根节点
root = etree.getroot()
print(etree) # <xml.etree.ElementTree.ElementTree object at 0x000002659EBE9E48> 对象
# 获取根节点的标签与属性值
print(root.tag,root.attrib)
# 获取根节点的子节点
for child_point in root:
print(child_point,child_point.tag,child_point.text.strip())
# 根据索引 切片
print(root[0].tag, root[0].text.strip())
print(root[0:3]) # 对象支持切片
# 查找元素
# Element对象有一个iter方法,可以对某个元素对象之下所有的子元素进行深度优先遍历(DFS)。ElementTree对象
# 同样也有这个方法。下面是查找XML文档中所有元素的最简单方法:
print('以下为查找元素:')
for elem in etree.iter():
print(elem.tag,elem.text.strip())
print('根据标签查找元素:')
for elem in etree.iter(tag='branch'):
print(elem.tag, elem.text.strip())
# 使用XPath查找感兴趣的元素,更加方便。Element对象中有一些find方法可以接受Xpath路径作为参数,find方法会返
# 回第一个匹配的子元素,findall以列表的形式返回所有匹配的子元素,
# iterfind则返回一个所有匹配元素的迭代器(iterator)。ElementTree对象也具备这些方法,相应地它的查找是从根
# 节点开始的。
print('下面是一个使用XPath查找元素的示例:')
for elem in etree.iterfind('doc/branch/sub-branch'):
print(elem.tag, elem.attrib)
print('上面的代码返回了branch元素之下所有tag为sub - branch的元素。接下来查找所有具备某个name属性的branch元素:')
for elem in etree.iterfind('branch[@name="release01"]'):
print(elem.tag, elem.attrib)
参考文章: https://www.cnblogs.com/deadwood-2016/p/8116863.html