Python XML解析实例详解
XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输数据。Python提供了多种解析XML文档的库,本文将介绍如何使用Python解析XML文档。
解析XML文档
Python内置的xml库中提供了两个模块用于解析XML文档:
- xml.etree.ElementTree:该模块提供了Element类,表示一个XML元素。可以使用该类的方法遍历解析XML文档。
- xml.dom:该模块提供了DOM(Document Object Model) API,以树结构表示XML文档,可以使用该模块的方法快速定位XML元素。
使用xml.etree.ElementTree解析XML文档
import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse('data.xml')
# 获取根节点
root = tree.getroot()
# 遍历XML文档中的所有元素
for element in root.iter():
# 输出元素名称和元素内容
print(element.tag, element.text)
在上面的例子中,我们首先通过ET.parse()
方法解析了一个名为data.xml
的XML文件,然后使用getroot()
方法获取了根节点。
接下来,使用root.iter()
方法遍历XML文档中的所有元素。对于每个元素,我们使用tag
属性获取该元素的名称,使用text
属性获取该元素的内容。最后,我们将元素的名称和内容输出到控制台。
使用xml.dom解析XML文档
import xml.dom.minidom as MD
# 解析XML文件
dom_tree = MD.parse('data.xml')
# 获取根节点
root = dom_tree.documentElement
# 获取第一个元素
first_element = root.getElementsByTagName('student')[0]
# 获取元素属性
name = first_element.getAttribute('name')
# 获取元素值
text = first_element.childNodes[0].data
# 输出元素名称、属性和内容
print('元素名称:', first_element.tagName)
print('属性名称:', name)
print('元素内容:', text)
在上面的例子中,我们首先通过MD.parse()
方法解析了一个名为data.xml
的XML文件,然后使用documentElement
属性获取了根节点。
接下来,我们使用getElementsByTagName()
方法获取根节点下的第一个名为student
的元素,然后使用getAttribute()
方法获取该元素的name
属性,使用childNodes[0].data
方法获取该元素的内容。最后,我们输出元素的名称、属性和内容到控制台。
更新XML文档
Python内置的xml.etree.ElementTree
模块还提供了相应的方法,可以更新XML文档中的元素。
我们可以使用element.set(key, value)
方法为一个元素设置属性,使用element.text=value
方法为一个元素设置值。
更新XML文档示例
import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse('data.xml')
# 获取根节点
root = tree.getroot()
# 遍历XML文档中的所有元素
for element in root.iter():
# 如果元素名称为student
if element.tag == 'student':
# 为元素设置新的属性
element.set('age', '20')
# 为元素设置新的内容
element.text = 'Tom'
# 保存XML文件
tree.write('data.xml')
在上面的例子中,我们首先通过ET.parse()
方法解析了一个名为data.xml
的XML文件,然后使用getroot()
方法获取了根节点。
接下来,使用root.iter()
方法遍历XML文档中的所有元素。对于每个元素,如果元素名称为student
,则使用set()
方法为该元素设置新的属性,并使用text
属性为该元素设置新的内容。
最后,我们使用tree.write()
方法保存更新后的XML文档。
总结
本文介绍了如何使用Python解析和更新XML文档。对于简单的XML文档,我们可以使用xml.etree.ElementTree
模块或xml.dom
模块来处理。如果XML文档比较复杂,可以考虑使用第三方库,例如lxml。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python xml解析实例详解 - Python技术站