PYTHON XML处理
Python 中处理 XML 数据可以通过内置的 xml.etree.ElementTree 模块,或者使用第三方库如 lxml。以下是使用 xml.etree.ElementTree 模块的一些基本操作:
1. 解析 XML 文件
import xml.etree.ElementTree as ET # 解析本地的 XML 文件 tree = ET.parse('example.xml') root = tree.getroot() # 从字符串解析 XML xml_str = """<root><child>Content</child></root>""" root = ET.fromstring(xml_str)
2. 遍历 XML 树
for child in root: print(child.tag, child.attrib)
3. 查找元素
# 通过标签名查找所有子元素 for elem in root.findall('child'): print(elem.text) # 通过路径查找元素 elem = root.find('.//child') print(elem.text)
4. 修改元素
# 修改元素的文本 for elem in root.findall('child'): elem.text = 'New content' # 修改元素的属性 for elem in root.findall('child'): elem.set('attribute', 'value')
5. 创建和添加元素
# 创建新元素 new_elem = ET.Element('newChild', attrib={'key': 'value'}) new_elem.text = 'Some text' # 将新元素添加到根元素下 root.append(new_elem)
6. 删除元素
# 删除元素
for elem in root.findall('child_to_remove'): root.remove(elem)
7. 写入 XML 文件
# 将修改后的 XML 树写入文件 tree.write('new_example.xml')
使用 lxml 库
lxml 是一个功能更强大的 XML 处理库,支持 XPath 2.0 和更复杂的查询。使用 lxml 可以这样操作:
安装 lxml
pip install lxml
解析 XML
from lxml import etree # 解析 XML 文件 tree = etree.parse('example.xml') # 解析 XML 字符串 root = etree.fromstring(xml_str)
使用 XPath 查找元素
# 使用 XPath 查找元素 elements = root.xpath('//root/child') for elem in elements: print(elem.text)
修改和写入
操作与 xml.etree.ElementTree 类似,但 lxml 的 XPath 功能更丰富。
注意事项
XML 的命名空间处理可能比上述示例更复杂,特别是当使用 lxml 时。
处理大型 XML 文件时,可能需要考虑性能和内存使用。