📅  最后修改于: 2023-12-03 15:33:57.799000             🧑  作者: Mango
XML是一种可扩展标记语言,被广泛用于Web服务和API的交互,以及保存结构化数据。在Python 3中,有多种方式来处理XML数据。
Python 3中的xml
模块提供了许多API来处理XML格式数据。其中,ElementTree
是最常用的API之一。
要解析XML文件,可以使用ElementTree
模块中的ElementTree.parse()
方法。它接受一个XML文件的路径作为参数,并返回一个ElementTree
对象,它代表整个XML文档。
import xml.etree.ElementTree as ET
tree = ET.parse('example.xml')
root = tree.getroot()
要解析XML字符串,可以使用ElementTree
模块中的ElementTree.fromstring()
方法。它接受一个XML字符串作为参数,并返回一个Element
对象,它代表XML文档的根元素。
import xml.etree.ElementTree as ET
xml_string = '<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don\'t forget me this weekend!</body></note>'
root = ET.fromstring(xml_string)
要遍历XML文档,可以使用Element
对象的iter()
方法。它返回一个迭代器,可以用来访问XML文档中的所有元素。
import xml.etree.ElementTree as ET
tree = ET.parse('example.xml')
root = tree.getroot()
for child in root:
print(child.tag, child.attrib)
for sub_child in child:
print('\t', sub_child.tag, sub_child.attrib, sub_child.text)
除了内置模块之外,还有许多第三方库可用于处理XML数据。以下是其中的一些:
lxml
是一个Python XML库,它提供了分析和操作XML文档的高效方法。它扩展了ElementTree
API,并增加了XPath支持等功能。
from lxml import etree
tree = etree.parse('example.xml')
root = tree.getroot()
for child in root:
print(child.tag, child.attrib)
for sub_child in child:
print('\t', sub_child.tag, sub_child.attrib, sub_child.text)
xmltodict
是一个Python库,它将XML文档转换为Python字典。它可以方便地处理复杂的XML文档,并且比使用ElementTree
API更简单。
import xmltodict
with open('example.xml') as file:
xml_string = file.read()
xml_dict = xmltodict.parse(xml_string)
for note in xml_dict['notes']['note']:
print(note['to'], note['from'], note['heading'], note['body'])
在Python 3中,有多种方式来处理XML数据,从内置模块到第三方库都提供了不同的API和功能。开发人员可以根据自己的需求和喜好来选择最适合自己的方式来处理XML数据。