赞
踩
XML(可扩展标记语言)是一种用于存储和交换数据的文本格式,而Python中的xml
模块提供了丰富的工具来解析和创建XML数据。本篇博客将深入研究xml
模块,包括XML解析、生成、遍历和修改,以及它在实际应用中的一些常见用法。
ElementTree
ElementTree
是Python的内置XML解析库,它简化了XML文档的解析。
import xml.etree.ElementTree as ET # 从字符串解析XML xml_string = """ <root> <person> <name>Alice</name> <age>25</age> </person> <person> <name>Bob</name> <age>30</age> </person> </root> """ root = ET.fromstring(xml_string) # 遍历XML元素 for person in root.findall('person'): name = person.find('name').text age = person.find('age').text print(f"Name: {name}, Age: {age}")
minidom
minidom
是Python的内置库,用于解析和操作XML文档。
from xml.dom import minidom # 从字符串解析XML xml_string = """ <root> <person> <name>Alice</name> <age>25</age> </person> <person> <name>Bob</name> <age>30</age> </person> </root> """ dom = minidom.parseString(xml_string) # 遍历XML元素 persons = dom.getElementsByTagName('person') for person in persons: name = person.getElementsByTagName('name')[0].firstChild.nodeValue age = person.getElementsByTagName('age')[0].firstChild.nodeValue print(f"Name: {name}, Age: {age}")
ElementTree
import xml.etree.ElementTree as ET # 创建根元素 root = ET.Element('root') # 创建子元素 person1 = ET.SubElement(root, 'person') name1 = ET.SubElement(person1, 'name') name1.text = 'Alice' age1 = ET.SubElement(person1, 'age') age1.text = '25' person2 = ET.SubElement(root, 'person') name2 = ET.SubElement(person2, 'name') name2.text = 'Bob' age2 = ET.SubElement(person2, 'age') age2.text = '30' # 将树写入XML文件 tree = ET.ElementTree(root) tree.write('output.xml')
minidom
from xml.dom import minidom # 创建根元素 root = minidom.Document() root_element = root.createElement('root') root.appendChild(root_element) # 创建子元素 person1 = root.createElement('person') root_element.appendChild(person1) name1 = root.createElement('name') name1.appendChild(root.createTextNode('Alice')) person1.appendChild(name1) age1 = root.createElement('age') age1.appendChild(root.createTextNode('25')) person1.appendChild(age1) person2 = root.createElement('person') root_element.appendChild(person2) name2 = root.createElement('name') name2.appendChild(root.createTextNode('Bob')) person2.appendChild(name2) age2 = root.createElement('age') age2.appendChild(root.createTextNode('30')) person2.appendChild(age2) # 将DOM写入XML文件 with open('output.xml', 'w') as f: root.writexml(f, indent='\t', addindent='\t', newl='\n')
import xml.etree.ElementTree as ET
# 从文件读取XML
tree = ET.parse('output.xml')
root = tree.getroot()
# 修改XML数据
for person in root.findall('person'):
age = person.find('age')
new_age = int(age.text) + 1
age.text = str(new_age)
# 将修改后的树写入新文件
tree.write('modified_output.xml')
xml
模块为Python提供了强大的XML处理工具,能够方便地解析、生成和修改XML数据。通过深入学习ElementTree
和minidom
的使用方法,你可以更好地处理XML数据,满足在实际项目中对XML进行操作的需求。希望通过这篇博客,你对Python的XML模块有了更深入的理解。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。