Python 解析XML文件
什么是XML文件?
XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言。XML文件包含一个文档结构,可以用来表示某种特定数据的层次结构。XML文件中的数据可以被解析和处理,使得它们能被计算机程序更方便地使用。
Python解析XML文件的模块
Python提供了多个模块来解析XML文件,常用的有以下两个:
- xml.dom:可以通过使用Document Object Model(DOM)来解析XML文件,将XML文件解析成一棵树,然后通过树结构来访问XML节点;
- xml.etree.ElementTree:使用 ElementTree 模块可以快速解析XML文件,通过使用Element对象来访问XML节点。
使用xml.etree.ElementTree解析XML文件
下面是使用xml.etree.ElementTree来解析XML文件的示例代码:
import xml.etree.ElementTree as ET
# 首先解析XML文件
tree = ET.parse('example.xml')
# 获取根节点
root = tree.getroot()
# 遍历XML文件的所有节点
for child in root:
print(child.tag, child.attrib)
for sub_child in child:
print(sub_child.tag, sub_child.attrib, sub_child.text)
以上代码中:
ET.parse('example.xml')
语句用于解析名为 ‘example.xml’ 的XML文件;tree.getroot()
用于获取XML文件的根节点;child.tag
语句用于获取某一节点的标签;child.attrib
语句用于获取某一节点的属性;sub_child.text
语句用于获取某一节点的文本内容。
使用xml.dom解析XML文件
下面是使用xml.dom来解析XML文件的示例代码:
import xml.dom.minidom
# 首先解析XML文件
DOMTree = xml.dom.minidom.parse('example.xml')
root = DOMTree.documentElement
# 遍历XML文件的所有节点
for child in root.childNodes:
if child.nodeType == xml.dom.minidom.Node.ELEMENT_NODE:
print(child.tagName, child.attributes['name'].value)
for sub_child in child.childNodes:
if sub_child.nodeType == xml.dom.minidom.Node.ELEMENT_NODE:
print(" ", sub_child.tagName, sub_child.childNodes[0].data)
以上代码中:
xml.dom.minidom.parse('example.xml')
语句用于解析名为 ‘example.xml’ 的XML文件;DOMTree.documentElement
用于获取XML文件的根节点;child.tagName
语句用于获取某一节点的标签;child.attributes['name'].value
语句用于获取某一节点的属性值;sub_child.childNodes[0].data
语句用于获取某一节点的文本内容。
示例
为了更好地说明如何解析XML文件,我们以下面的 XML 文件为例:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="bk001">
<author>哈利·波特</author>
<title>Harry Potter</title>
<genre>Fantasy</genre>
<price>29.99</price>
<publish_date>2005-01-01</publish_date>
<description>A young wizard finds himself competing in a hazardous tournament between rival schools of magic.</description>
</book>
<book id="bk002">
<author>绿野仙踪</author>
<title>The Wonderful Wizard of Oz</title>
<genre>Fantasy</genre>
<price>44.95</price>
<publish_date>2011-02-24</publish_date>
<description>A young girl is whisked away to a magical land and embarks on a journey to see the Wizard who can help her return home.</description>
</book>
</catalog>
在上面提到的两个解析XML文件的示例中,我们均使用了该XML文件进行解析,你也可以按照上面的示例代码将其解析。
注: 上面的示例代码中, example.xml
代表 XML 文件的文件名或路径,可以根据实际情况进行修改。