Python 解析 XML

介绍

本教程将详细介绍如何使用Python 3解析XML文档。我们将学习一些常见的库,例如xml.etree.ElementTreexmltodict,以及如何安全地处理XML数据。

先决条件

  • Python 3.x安装在您的机器上。
  • 熟悉Python语法和基本概念。

XML是什么?

XML(Extensible Markup Language)是一种标记语言,用于定义自己的标记和文档结构。它被广泛用于存储、传输和描述数据。在本教程中,我们将学习如何使用Python解析XML文件。

xml.etree.ElementTree模块

Python的标准库提供了一个名为xml.etree.ElementTree的模块,可以轻松地处理XML数据。此模块包括以下功能:

  • 解析XML文件并构建树状结构。
  • 搜索和遍历XML元素。
  • 修改和生成新的XML文档。

安装

xml.etree.ElementTree模块是Python标准库的一部分,因此您不需要单独安装它。

解析XML文件

首先,让我们看一个简单的示例,演示如何使用xml.etree.ElementTree模块解析XML文件:

import xml.etree.ElementTree as ET

# 从字符串中解析XML数据
data = '<root><item>Hello, World!</item></root>'
tree = ET.fromstring(data)

# 获取根元素的标签名称
print(tree.tag)  # 'root'

# 遍历所有子元素
for item in tree:
    print(item.tag, item.text)  # 'item', 'Hello, World!'

搜索和遍历XML元素

xml.etree.ElementTree模块提供了多种方法来搜索和遍历XML元素。以下是一些常见的示例:

# 通过标签名称查找元素
item = tree.find('item')
print(item.text)  # 'Hello, World!'

# 通过XPath表达式查找元素
items = tree.findall('.//item')
for item in items:
    print(item.text)

修改和生成XML文档

您还可以使用xml.etree.ElementTree模块修改现有的XML元素或生成新的XML文档。这里是一个简单的例子:

# 创建一个新的XML元素
new_item = ET.Element('item')
new_item.text = 'Goodbye, World!'

# 将新元素添加到根元素中
tree.append(new_item)

# 生成新的XML文档并写入文件
ET.ElementTree(tree).write('output.xml')

xmltodict模块

xmltodict是一个第三方库,它提供了一种简单而直观的方法来解析和处理XML数据。此库将XML文档转换为Python字典对象,使其易于处理和操作。

安装

您可以使用pip安装xmltodict

pip install xmltodict

解析XML文件

下面是一个简单的示例,演示如何使用xmltodict解析XML数据:

import xmltodict

# 从字符串中解析XML数据
data = '<root><item>Hello, World!</item></root>'
dict_data = xmltodict.parse(data)

# 访问XML元素的值
print(dict_data['root']['item'])  # 'Hello, World!'

修改和生成XML文档

您还可以使用xmltodict来修改现有的Python字典对象或生成新的XML文档。这里是一个简单的例子:

# 创建一个新的Python字典
new_dict_data = {'root': {'item': 'Goodbye, World!'}}

# 将字典转换为XML并写入文件
with open('output.xml', 'w') as f:
    f.write(xmltodict.unparse(new_dict_data, pretty=True))

结论

在本教程中,我们学习了如何使用Python解析XML文档。我们研究了两个常见的库:xml.etree.ElementTreexmltodict,并介绍了如何安装、解析、搜索和遍历XML元素以及修改和生成新的XML文档。

资源