加载元素树模块
Python标准库中,提供了元素树的两种实现。一个是纯Python实现的xml.etree.ElementTree,另一个是速度更快的C语言实现xml.etree.cElementTree。
因为C语言实现的元素树,它的速度要快很多,而且内存消耗也要少很多。所以在加载模块时先尝试去载入C语言实现的,没有再去用Python实现的元素树。
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
打开XML文档并解析为树
调用parse()方法,返回解析树。调用树的方法getroot()可以获取树的根节点。
tree = ET.parse("kun.xml") # 将xml解析为树
root = tree.getroot() # 获取根节点
查找节点
xml示例:
张三
18
89
李四
19
81
王五
17
92
使用Element.iter()查找
Element.iter()会将节点中的子节点和孙节点都遍历一遍。
for student in root.iter('student'):
print student[0].text # 打印名字
输出结果:
张三
李四
王五
使用Element.findall()查找
Element.findall()只会将节点中的子节点遍历一遍,不会查找孙节点。查找孙节点时可以使用下列方法:
students = root.find('students')
for element in students.findall('student'):
name = element.find('name').text
print name
输出结果:
张三
李四
王五
修改节点
通过一下函数进行修改:
方法
功能
Element.text = ''
直接改变字段内容
Element.append(Element)
为当前的Elment对象添加子对象
Element.remove(Element)
删除Element节点
Element.set(key, value)
添加和修改属性
ElementTree.Element()
构建一个节点
ElementTree.SubElement(Element,tag)
构建一个子节点
保存XML
调用树的方法write()保存更新XML文件:
# 以UTF-8的格式保存
tree.write('kun.xml', 'UTF-8')