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 文件时,可能需要考虑性能和内存使用。