Python ElementTree库XML解析与生成完整指南
本文详解Python中ElementTree库的使用,涵盖从引入Element、ElementTree及SubElement类开始,演示如何读取XML文件并获取根节点。内容包含查找子节点、插入新节点(两种方法对比)、操作属性以及使用indent函数美化XML输出的完整代码示例,帮助开发者高效处理XML数据。
1.引入库
主要涉及三个核心类:ElementTree用于管理整个文档,Element代表单个节点,以及SubElement作为创建子节点的便捷包装类。
from xml.etree.ElementTree import ElementTree from xml.etree.ElementTree import Element from xml.etree.ElementTree import SubElement as SE
2.读入并解析
tree = ElementTree(file=xmlfile) root = tree.getroot()
加载XML文件后,返回的对象类型为ElementTree。要访问XML的根节点,需调用getroot()方法。
XML示例文件:
<item sid='1712' name='大CC' > <a id=1></a> <a id=2></a> </item>
3.获取子结点
查找Element的所有子结点:
AArry = item.findall('a')也可使用getchildren():
childs = item.getchildren()
for subItem in childs:
print subItem.get('id')4.插入子结点
方法一:
item = Element("item", {'sid' : '1713', 'name' : 'ityouhui'})
root.append(item)方法二:
SE(root,'item',{'sid':'1713','name':'ityouhui'})方法一的优势在于插入节点后,可以直接对该item对象进行后续操作。方法二在语法上更为简洁,其中SE即为SubElement的别名,已在引入部分声明。
5.操作属性
获取Element的某个属性值(eg:获取item的 name)
print root.find('item/name').text
print item.get('name')获取Element所有属性
print item.items() # [('sid', '1712'), ('name', '大CC')]
print item.attrib # {'sid': '1712', 'name': '大CC'}6.美化XML
在写入文件之前,对root调用此函数,可使输出的XML文件格式整齐美观:
indent(root) book.write(xmlfile,'utf-8')
## Get pretty look
def indent( elem, level=0):
i = "\n" + level*" "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
for e in elem:
indent(e, level+1)
if not e.tail or not e.tail.strip():
e.tail = i
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
return elem到此这篇关于python通过ElementTree操作XML的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









