Python:
处理XML

如何做:

Python的xml.etree.ElementTree模块提供了处理XML的工具。

解析XML文档:

import xml.etree.ElementTree as ET

xml_data = """<?xml version="1.0"?>
<library>
    <book>
        <title>Learning Python</title>
        <author>Mark Lutz</author>
    </book>
    <book>
        <title>Programming Python</title>
        <author>Mark Lutz</author>
    </book>
</library>
"""

root = ET.fromstring(xml_data)
for book in root.findall('book'):
    title = book.find('title').text
    author = book.find('author').text
    print(f'标题: {title}, 作者: {author}')

示例输出:

标题: Learning Python, 作者: Mark Lutz
标题: Programming Python, 作者: Mark Lutz

创建XML文档:

library = ET.Element('library')
book = ET.SubElement(library, 'book')
title = ET.SubElement(book, 'title')
title.text = 'Automate the Boring Stuff with Python'
author = ET.SubElement(book, 'author')
author.text = 'Al Sweigart'

tree = ET.ElementTree(library)
tree.write('library.xml')

深入了解:

XML自90年代末以来一直存在,作为SGML的简化子集被创建,以便于在线数据共享。尽管JSON对于web数据的流行日增,XML在许多企业、配置和web服务(SOAP、RSS)中仍然至关重要。

xml.etree.ElementTree的替代品包括lxmlminidomlxml速度更快,功能更丰富,而minidom提供了更“像DOM”的XML接口。在选择时,考虑易用性、性能和特定的功能需求。

在底层,ElementTree操作的是一个元素树模型,其中XML文件的每个组件都是树中的一个节点。这允许了直接的路径表达和搜索,使得导航和操作XML数据的结构变得更加简单。

另请参阅:

  • Python xml.etree.ElementTree模块:https://docs.python.org/3/library/xml.etree.elementtree.html
  • lxml:https://lxml.de/
  • W3Schools XML教程:https://www.w3schools.com/xml/
  • XML规范:https://www.w3.org/XML/