📅  最后修改于: 2023-12-03 14:46:18.351000             🧑  作者: Mango
在 Python 中,我们可以使用 xml.etree.ElementTree
模块来解析 xml 字符串。该模块提供了方便的 API 来访问和操作 XML 数据。本文将介绍如何使用该模块来解析 xml 字符串。
在开始之前,我们需要先安装 xml.etree.ElementTree
模块。如果你使用的是 Python 2.x 版本,你可能需要使用 elementtree
模块,该模块在 Python 2.x 版本中默认不包含。
以下是安装方式:
pip install elementtree # for python 2.x
pip install xml.etree.ElementTree # for python 3.x
让我们从一个简单的 XML 字符串开始:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<person>
<name>John Smith</name>
<age>30</age>
</person>
<person>
<name>Jane Doe</name>
<age>25</age>
</person>
</root>
我们要解析这个 XML 字符串并访问其中的元素。
import xml.etree.ElementTree as ET
xml_string = '''<?xml version="1.0" encoding="UTF-8"?>
<root>
<person>
<name>John Smith</name>
<age>30</age>
</person>
<person>
<name>Jane Doe</name>
<age>25</age>
</person>
</root>'''
root = ET.fromstring(xml_string)
# 访问元素
for person in root.findall('person'):
name = person.find('name').text
age = person.find('age').text
print(name, age)
输出:
John Smith 30
Jane Doe 25
我们也可以使用 xml.etree.ElementTree
模块来解析 XML 文件。下面是一个示例 XML 文件 - data.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<person>
<name>John Smith</name>
<age>30</age>
</person>
<person>
<name>Jane Doe</name>
<age>25</age>
</person>
</root>
我们要解析 data.xml
文件并根据需要访问其中的元素。
import xml.etree.ElementTree as ET
tree = ET.parse('data.xml')
root = tree.getroot()
# 访问元素
for person in root.findall('person'):
name = person.find('name').text
age = person.find('age').text
print(name, age)
输出:
John Smith 30
Jane Doe 25
Python 中的 xml.etree.ElementTree
模块提供了方便的 API 来解析 XML 数据。我们可以使用 fromstring
方法解析 XML 字符串,或者使用 parse
方法解析 XML 文件。我们可以通过 find
, findall
, iter
等方法来访问 XML 元素,并使用 text
, attrib
等属性来获取元素的内容和属性。
代码片段:
import xml.etree.ElementTree as ET
xml_string = '''<?xml version="1.0" encoding="UTF-8"?>
<root>
<person>
<name>John Smith</name>
<age>30</age>
</person>
<person>
<name>Jane Doe</name>
<age>25</age>
</person>
</root>'''
root = ET.fromstring(xml_string)
# 访问元素
for person in root.findall('person'):
name = person.find('name').text
age = person.find('age').text
print(name, age)
import xml.etree.ElementTree as ET
tree = ET.parse('data.xml')
root = tree.getroot()
# 访问元素
for person in root.findall('person'):
name = person.find('name').text
age = person.find('age').text
print(name, age)