📜  Python 3-XML处理(1)

📅  最后修改于: 2023-12-03 15:33:57.799000             🧑  作者: Mango

Python 3-XML处理

XML是一种可扩展标记语言,被广泛用于Web服务和API的交互,以及保存结构化数据。在Python 3中,有多种方式来处理XML数据。

内置模块

Python 3中的xml模块提供了许多API来处理XML格式数据。其中,ElementTree是最常用的API之一。

解析XML文件

要解析XML文件,可以使用ElementTree模块中的ElementTree.parse()方法。它接受一个XML文件的路径作为参数,并返回一个ElementTree对象,它代表整个XML文档。

import xml.etree.ElementTree as ET

tree = ET.parse('example.xml')
root = tree.getroot()
解析XML字符串

要解析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文档

要遍历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

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

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数据。