操作XML是Python开发中非常常见的工作,ElementTree是Python标准库中处理XML的模块之一。本攻略将介绍如何使用ElementTree模块来操作XML,包括获取结点、读取属性以及美化XML等内容。
获取结点
在ElementTree中,获取XML文档中的某个结点有多种方法。其中最常用的方式是使用find()
和findall()
方法。
find()
方法可用于查找XML文档中第一个符合条件的结点,其参数是指定的结点名称,例如:
import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse('example.xml')
# 获取根节点
root = tree.getroot()
# 查找名为country的结点
country = root.find('country')
print(country.tag, country.attrib)
输出:
country {'name': 'Liechtenstein'}
findall()
方法可用于查找XML文档中符合条件的所有结点,其参数是指定的结点名称,例如:
import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse('example.xml')
# 获取根节点
root = tree.getroot()
# 查找所有名为rank的结点
ranks = root.findall('.//rank')
for rank in ranks:
print(rank.tag, rank.text)
输出:
rank 2
rank 3
rank 5
rank 7
读取属性
ElementTree获取XML文档结点的另一种常见操作是读取结点的属性。可以使用结点对象的attrib
属性来读取散列表形式的属性,例如:
import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse('example.xml')
# 获取根节点
root = tree.getroot()
# 获取第一个country结点的name属性
name = root.find('country').get('name')
print(name)
输出:
Liechtenstein
美化XML
ElementTree处理XML文档后,输出的XML文本是未进行任何格式化处理的,这可能使得XML文档难以读懂。在实际应用中,我们通常需要对XML文档进行美化,即按照一定的格式进行缩进和换行,使得XML文档具备良好的可读性。可以使用xml.dom.minidom模块提供的parseString()
方法来对XML文本进行格式化,例如:
import xml.etree.ElementTree as ET
import xml.dom.minidom as minidom
# 解析XML文件
tree = ET.parse('example.xml')
# 获取根节点
root = tree.getroot()
# 获取XML文本
xmlstr = ET.tostring(root, encoding='utf8', method='xml')
# 解析XML文本
dom = minidom.parseString(xmlstr)
# 获取美化后的XML文本
pretty_xml_as_string = dom.toprettyxml()
print(pretty_xml_as_string)
输出:
<?xml version="1.0" ?>
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
至此,我们已经介绍了如何使用ElementTree模块来获取XML结点、读取属性和美化XML等操作。在实际应用中,可以根据具体的需求,灵活运用这些操作来进行XML文档的处理。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python通过ElementTree操作XML获取结点读取属性美化XML - Python技术站