Bootstrap

Python XML 解析

Python XML 解析

XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言。它是一种自我描述的语言,允许用户定义自己的标签和文档结构。Python 提供了多种库来解析 XML 数据,其中最常用的是 xml.etree.ElementTreelxml

1. xml.etree.ElementTree

xml.etree.ElementTree 是 Python 的内置库,用于解析和创建 XML 数据。它提供了一个轻量级的、Pythonic 的 API 来处理 XML 数据。

解析 XML

要解析 XML 数据,首先需要导入 xml.etree.ElementTree 模块,并使用 parse() 函数读取 XML 文件。

import xml.etree.ElementTree as ET

tree = ET.parse('example.xml')
root = tree.getroot()

遍历 XML

可以使用 iter() 函数遍历 XML 树。

for child in root:
    print(child.tag, child.attrib)

查找元素

可以使用 find()findall() 函数查找元素。

# 查找第一个名为 'title' 的元素
title = root.find('title')

# 查找所有名为 'author' 的元素
authors = root.findall('author')

修改元素

可以修改元素的文本和属性。

# 修改元素的文本
title.text = 'New Title'

# 修改元素的属性
author = root.find('author')
author.set('email', '[email protected]')

写入 XML

修改完 XML 数据后,可以使用 write() 函数将其写入文件。

tree.write('new_example.xml')

2. lxml

lxml 是一个第三方库,它提供了对 XML 和 HTML 的快速、灵活的解析。它是对 xml.etree.ElementTree 的扩展,提供了更多的功能和更好的性能。

安装 lxml

首先,需要安装 lxml 库。可以使用 pip 进行安装。

pip install lxml

解析 XML

使用 lxml 解析 XML 数据与 xml.etree.ElementTree 类似。

from lxml import etree

tree = etree.parse('example.xml')
root = tree.getroot()

遍历 XML

xml.etree.ElementTree 类似,可以使用 iter() 函数遍历 XML 树。

for child in root:
    print(child.tag, child.attrib)

查找元素

lxml 提供了更多的查找函数,如 xpath()cssselect()

# 使用 XPath 查找元素
title = root.xpath('//title')[0]

# 使用 CSS 选择器查找元素
authors = root.cssselect('author')

修改元素

xml.etree.ElementTree 类似,可以修改元素的文本和属性。

# 修改元素的文本
title.text = 'New Title'

# 修改元素的属性
author = root.find('author')
author.set('email', '[email protected]')

写入 XML

修改完 XML 数据后,可以使用 write() 函数将其写入文件。

tree.write('new_example.xml')

总结

Python 提供了多种库来解析 XML 数据,其中最常用的是 xml.etree.ElementTreelxmlxml.etree.ElementTree 是 Python 的内置库,提供了基本的 XML 解析功能。lxml 是一个第三方库,提供了更多的功能和更好的性能。根据需要选择合适的库来解析 XML 数据。

;