当前位置:   article > 正文

Python的xml模块:处理XML数据的利器_python结合xml

python结合xml

XML(可扩展标记语言)是一种用于存储和交换数据的文本格式,而Python中的xml模块提供了丰富的工具来解析和创建XML数据。本篇博客将深入研究xml模块,包括XML解析、生成、遍历和修改,以及它在实际应用中的一些常见用法。

1. 解析XML

1.1 使用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}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
1.2 使用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}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

2. 生成XML

2.1 使用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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
2.2 使用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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

3. 修改XML

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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

结语

xml模块为Python提供了强大的XML处理工具,能够方便地解析、生成和修改XML数据。通过深入学习ElementTreeminidom的使用方法,你可以更好地处理XML数据,满足在实际项目中对XML进行操作的需求。希望通过这篇博客,你对Python的XML模块有了更深入的理解。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/663043
推荐阅读
相关标签
  

闽ICP备14008679号