Python 解析XML文件

  • Post category:Python

让我来为您详细讲解一下Python解析XML文件的使用方法吧。

什么是XML文件?

XML(Extensible Markup Language)扩展标记语言,是一种用于存储和传输数据的标记语言。它的特点是可以自定义标签和属性,通过对数据结构进行描述和组合,实现了对非结构化和半结构化数据的描述、传输、存储和显示。

Python解析XML文件的方法

在Python中,我们可以使用标准库中的ElementTree来操作XML文件。

1、使用 ElementTree 库解析 XML

ElementTree 是 Python 标准库中用于解析 XML 文档的一个模块,它提供了一种方便的方式来访问 XML 文档的数据。以下是使用 ElementTree 库解析 XML 的一些基本步骤:

引入 ElementTree 模块

import xml.etree.ElementTree as ET

加载 XML 文档

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

访问 XML 数据

获取根节点的标签:

root.tag

获取根节点的属性:

root.attrib

遍历 XML 数据:

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

获取子元素:

root.findall("./name")

获取元素的文本值:

root.find("./name").text

2、使用 minidom 库解析 XML

python提供了xml.dom.minidom库解析xml文件。以下是使用 minidom 库解析 XML 的一些基本步骤:

引入 minidom 库

from xml.dom import minidom

加载 XML 文档

dom = minidom.parse('example.xml')

访问 XML 数据

获取根节点的标签:

dom.documentElement.tagName

获取子元素:

dom.getElementsByTagName('name')

获取元素的文本值:

dom.getElementsByTagName('name')[0].childNodes[0].nodeValue

示例说明

我们来看一个示例:假设我们要读取下面的XML文件example.xml并解析:

<?xml version="1.0"?>
<data>
   <person>
      <name>Ross</name>
      <age>30</age>
      <gender>M</gender>
   </person>
   <person>
      <name>Rachel</name>
      <age>29</age>
      <gender>F</gender>
   </person>
   <person>
      <name>Joey</name>
      <age>32</age>
      <gender>M</gender>
   </person>
</data>

使用ElementTree库的示例

import xml.etree.ElementTree as ET

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

# 输出根节点的标签
print(root.tag)

# 输出根节点的属性
print(root.attrib)

# 遍历XML数据
for child in root:
    print(child.tag, child.attrib)

# 获取子元素
for elem in root:
    for subelem in elem:
        print(elem.tag, subelem.tag, subelem.text)

# 获取元素的文本值
for name in root.findall('.//name'):
    print(name.text)

使用minidom库的示例

from xml.dom import minidom

dom = minidom.parse('example.xml')

# 输出根节点的标签
print(dom.documentElement.tagName)

# 获取子元素
persons = dom.getElementsByTagName('person')
for person in persons:
    name = person.getElementsByTagName('name')[0].childNodes[0].nodeValue
    age = person.getElementsByTagName('age')[0].childNodes[0].nodeValue
    gender = person.getElementsByTagName('gender')[0].childNodes[0].nodeValue
    print("Name: %s, Age: %s, Gender: %s" % (name, age, gender))

以上就是Python解析XML文件的方法和示例。希望对您有所帮助!