欢迎访问宙启技术站
智能推送

Python中利用XMLGenerator()和ElementTree实现XML文件的解析方法

发布时间:2024-01-01 17:02:04

在Python中,可以使用XMLGenerator()ElementTree模块来解析XML文件。

首先,导入所需的模块:

from xml.etree.ElementTree import ElementTree,Element
from xml.dom.minidom import Document
from xml.etree.ElementTree import SubElement
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import parse

接下来,我们来看一个具体的例子,假设有一个XML文件,内容如下:

<students>
    <student>
        <name>Tom</name>
        <age>18</age>
    </student>
    <student>
        <name>John</name>
        <age>19</age>
    </student>
</students>

我们可以使用ElementTree模块将XML文件解析为树状结构,然后对其进行操作。

tree = parse('students.xml')  # 解析students.xml文件
root = tree.getroot()  # 获取根节点

接下来,我们可以遍历这个树状结构,获取到XML中的元素和元素的属性值。

# 遍历根节点
for student in root.iter('student'):
    # 获取name和age元素的值
    name = student.find('name').text
    age = student.find('age').text
    print("Name: ", name, "Age: ", age)

此时,输出的结果为:

Name:  Tom Age:  18
Name:  John Age:  19

接下来,我们可以使用XMLGenerator模块来创建一个新的XML文件,并添加数据。

# 创建一个新的XML文档
doc = Document()

# 创建根节点
root = doc.createElement('students')
doc.appendChild(root)

# 创建student节点
student1 = doc.createElement('student')
root.appendChild(student1)

# 创建name子节点,并设置其值
name1 = doc.createElement('name')
name1_text = doc.createTextNode('Tom')
name1.appendChild(name1_text)
student1.appendChild(name1)

# 创建age子节点,并设置其值
age1 = doc.createElement('age')
age1_text = doc.createTextNode('18')
age1.appendChild(age1_text)
student1.appendChild(age1)

# 创建student节点
student2 = doc.createElement('student')
root.appendChild(student2)

# 创建name子节点,并设置其值
name2 = doc.createElement('name')
name2_text = doc.createTextNode('John')
name2.appendChild(name2_text)
student2.appendChild(name2)

# 创建age子节点,并设置其值
age2 = doc.createElement('age')
age2_text = doc.createTextNode('19')
age2.appendChild(age2_text)
student2.appendChild(age2)

# 将XML文档写入文件
with open('new_students.xml', 'w') as f:
    doc.writexml(f, indent='', addindent='\t', newl='
', encoding='utf-8')

运行上述代码后,就会在当前目录下生成一个新的XML文件new_students.xml,其内容如下:

<students>
	<student>
		<name>Tom</name>
		<age>18</age>
	</student>
	<student>
		<name>John</name>
		<age>19</age>
	</student>
</students>

从上述例子中可以看出,使用ElementTree模块可以轻松解析XML文件,并获取到其中的元素和属性值。同时,XMLGenerator模块也可以用于创建新的XML文件,并添加数据。这两个模块在处理XML文件时非常方便和实用。