下面是关于“Python练习之读取XML节点和属性值的方法”的完整攻略:
1. 准备工作
在 Python 中读取 XML 文件,需要使用到内置库xml.etree.ElementTree
,这个库提供了解析和生成 XML 文档的方法。
在 Python 中可以使用 pip 工具进行安装:
pip install xml.etree.ElementTree
2. 读取 XML 节点
XML 中有节点和属性两种元素。节点是文档中的元素或标签,属性是节点的描述信息。下面是如何读取 XML 中的节点:
import xml.etree.ElementTree as ET
# 创建 ElementTree 对象并解析 XML 文件
tree = ET.parse('sample.xml')
# 获取根节点
root = tree.getroot()
# 获取子节点
for child in root:
print(child.tag, child.text)
上述代码首先使用ET.parse()
方法解析 XML 文件,获得一个树状结构的对象。接着使用getroot()
方法获取根节点,再使用 for 循环遍历所有子节点。
3. 读取 XML 属性值
除了节点元素,XML 中还有属性元素,用于对节点进行描述。下面是如何读取 XML 中的属性值:
import xml.etree.ElementTree as ET
# 创建 ElementTree 对象并解析 XML 文件
tree = ET.parse('sample.xml')
# 获取根节点
root = tree.getroot()
# 获取节点 id 的属性值
for child in root:
print(child.get('id'))
上述代码中使用get()
方法获取节点的属性值。在get()
方法中传入属性的名称即可获得属性值。
4. 示例说明
下面是两个示例说明:
示例 1
考虑如下的 XML 文件:
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
下面是如何读取这个 XML 中的节点和属性:
import xml.etree.ElementTree as ET
# 创建 ElementTree 对象并解析 XML 文件
tree = ET.parse('data.xml')
# 获取根节点
root = tree.getroot()
# 遍历节点和子节点
for country in root.findall('country'):
# 获取 name 属性值
name = country.get('name')
# 获取 rank 节点元素的文本值
rank = country.find('rank').text
# 获取 neighbor 节点元素的所有属性
neighbors = country.findall('neighbor')
# 输出节点信息
print(f'Country: {name}')
print(f'Rank: {rank}')
for neighbor in neighbors:
print(f'Neighbor: {neighbor.get("name")} ({neighbor.get("direction")})')
上述代码中使用 for 循环遍历所有country
节点,使用get()
方法获取节点的name
属性值,使用find()
方法获取子节点rank
的文本值,使用findall()
方法获取所有neighbor
子节点元素的属性值。
示例 2
考虑如下的 XML 文件:
<?xml version="1.0"?>
<books>
<book>
<title>Python编程从入门到实践</title>
<author>Eric Matthes</author>
<publisher>No Starch Press</publisher>
<price>¥120</price>
</book>
<book>
<title>流浪地球</title>
<author>刘慈欣</author>
<publisher>重庆出版社</publisher>
<price>¥39</price>
</book>
</books>
下面是如何读取这个 XML 中的节点和属性:
import xml.etree.ElementTree as ET
# 创建 ElementTree 对象并解析 XML 文件
tree = ET.parse('books.xml')
# 获取根节点
root = tree.getroot()
# 遍历节点和子节点
for book in root.findall('book'):
# 获取 title 节点元素的文本值
title = book.find('title').text
# 获取 author 节点元素的文本值
author = book.find('author').text
# 获取 price 节点元素的文本值
price = book.find('price').text
# 输出节点信息
print(f'Title: {title}')
print(f'Author: {author}')
print(f'Price: {price}')
上述代码中使用 for 循环遍历books
节点下的所有book
节点,使用find()
方法获取节点元素的文本值。
希望以上内容对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python练习之读取XML节点和属性值的方法 - Python技术站