📜  Python的XML 解析(1)

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

Python的XML 解析

Python是一种解释型编程语言,广泛应用于Web开发、数据分析和科学计算等领域。Python提供了许多库,其中之一就是用于XML解析的库,也就是本文将要介绍的主题。

什么是XML?

XML(可扩展标记语言)是一种标记语言,被广泛应用于数据传输和数据存储。与HTML类似,XML也使用标记来描述文档的结构和内容。XML是一种自定义标记的语言,它允许用户通过定义标记来表示自己的数据类型。XML是一个非常灵活的语言,可以适用于各种数据类型。

如何解析XML?

Python提供了许多库用于XML解析,其中xml库是Python标准库之一。这个库提供了两个模块:xml.etree.ElementTreexml.dom.minidom

使用xml.etree.ElementTree解析XML

xml.etree.ElementTree提供了一种基于DOM和SAX的API用于解析XML。使用ElementTree类可以将整个XML文档解析成一个树形结构,从而方便地访问和操作XML文档。

import xml.etree.ElementTree as ET

# 读取XML文件
tree = ET.parse('example.xml')

# 获取根元素
root = tree.getroot()

# 遍历子元素
for child in root:
    print(child.tag, child.attrib)

# 访问元素
print(root[0][1].text)

# 添加元素
new_element = ET.Element('new_element')
new_element.text = 'New Element'
root.append(new_element)

# 写入文件
tree.write('output.xml')
使用xml.dom.minidom解析XML

xml.dom.minidom提供了一种基于DOM的API用于解析XML。使用minidom模块可以将整个XML文档加载到内存中,并根据XML文档的结构提供一系列方法和属性用于访问和操作XML文档。

import xml.dom.minidom as minidom

# 读取XML文件
dom = minidom.parse('example.xml')

# 获取根元素
root = dom.documentElement

# 遍历子元素
for child in root.childNodes:
    if child.nodeType == child.ELEMENT_NODE:
        print(child.tagName, child.attributes['id'].value)

# 访问元素
element = root.getElementsByTagName('name')[0]
print(element.firstChild.data)

# 添加元素
new_element = dom.createElement('new_element')
new_text = dom.createTextNode('New Element')
new_element.appendChild(new_text)
root.appendChild(new_element)

# 写入文件
with open('output.xml', 'w') as f:
    dom.writexml(f)
总结

Python的XML解析库提供了一种方便简单的方法来解析和操作XML文档。xml.etree.ElementTree适合解析大型XML文档,而xml.dom.minidom适合对小型XML文档进行操作。我们可以根据实际需要选择合适的库来解析和操作XML文档。