Python中处理XML数据通常使用`xml.etree.ElementTree`模块,它提供了解析和操作XML文档的功能。以下是使用`xml.etree.ElementTree`模块进行XML操作的基本步骤:
解析XML文档
1. 导入模块:
import xml.etree.ElementTree as ET
2. 解析XML文件或字符串:
解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()
解析XML字符串
xml_string = '
' John 30root = ET.fromstring(xml_string)
访问XML素
1. 获取根素:
root = tree.getroot()
2. 遍历子素:
for child in root:
print(child.tag, child.attrib)
3. 获取特定素:
for child in root: 获取第一个子素
print(child.tag, child.text)
4. 使用XPath表达式查找素:
names = root.findall('.//name')
for name in names:
print(name.text)
写入新的素
1. 创建新的素对象:
new_element = ET.Element('new_element')
new_element.text = 'New Value'
2. 添加属性:
new_element.set('attribute_name', 'attribute_value')
3. 将新素添加到XML文档中:
root.append(new_element)
修改素的内容和属性
1. 修改素的文本内容:
root.text = 'New Text'
2. 修改素的属性值:
root.set('attribute_name', 'new_value')
删除素
1. 删除指定的素:
root.remove(root)
保存修改后的XML文档
1. 使用`ElementTree`对象的`.write()`方法将修改后的XML文档保存到文件中:
tree.write('modified_example.xml', encoding='utf-8', xml_declaration=True)
使用`xml.dom.minidom`模块写入XML
1. 导入模块:
import xml.dom.minidom as minidom
2. 写入XML文件:
dom = minidom.getDOMImplementation().createDocument(None, 'root', None)
root = dom.documentElement
添加子节点
student1 = dom.createElement('student')
student1.setAttribute('id', '1')
student1.appendChild(dom.createTextNode('John'))
root.appendChild(student1)
写入文件
with open('output.xml', 'w') as file:
file.write(dom.toprettyxml(indent=" "))
使用`lxml`库
1. 安装`lxml`库:
pip install lxml
2. 解析XML文档:
from lxml import etree
xml_data = '
' John 30root = etree.fromstring(xml_data)
3. 访问XML素:
for child in root:
print(child.tag, child.text)
4. 写入新的素:
new_element = etree.Element('new_element')
new_element.text = 'New Value'
root.append(new_element)
写入文件
with open('output.xml', 'wb') as file:
file.write(etree.tostring(root, pretty_print=True, encoding='utf-8', xml_declaration=True))
以上是使用Python处理XML的基本方法。您可以根据需要选择不同的模块和库来进行操作。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/bj/138027.html