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文件时非常方便和实用。
