在Python中修改XML文件内容,可以使用多种方法。以下是几种常见的方法:
方法一:使用xml.dom.minidom
`xml.dom.minidom` 是Python标准库中的一个模块,可以用来解析和修改XML文档。以下是一个简单的示例代码:
```python
import os
import xml.dom.minidom
储存xml文件的文件夹的路径
path = 'Annotations'
得到文件夹下所有文件名称
xmls = os.listdir(path)
for xml_name in xmls:
遍历文件夹
print('修改第' + str(i) + '个xml' + ' 名字是:' + xml_name)
i = i + 1
得到一个xml完整的路径
xml_path = os.path.join(path, xml_name)
读取xml
dom = xml.dom.minidom.parse(xml_path)
old_xml = dom.documentElement
获取标签值,获得你想要修改的值
name = old_xml.getElementsByTagName('name')
修改
for i in range(len(name)):
name[i].firstChild.data = 'garbage_bag'
保存修改到xml文件中
with open(xml_path, 'w') as f:
dom.writexml(f)
print('保存修改成功!!! 一键收藏 评论 python修改xml文件的值')
方法二:使用字符串替换
这种方法适用于较小的XML文件,可以通过读取文件内容,进行字符串替换,然后写回文件。以下是一个示例代码:
```python
old = open("test.xml", "r")
lines = old.readlines()
a = " "
i = 1
newlines = []
for line in lines:
if a in line:
line = line.replace(a, " a " + str(i) + " ")
i = i + 1
newlines.append(line)
for line in newlines:
print(line)
new = open("newtest.xml", "w")
new.writelines(newlines)
new.close()
old.close()
方法三:使用xml.etree.ElementTree
`xml.etree.ElementTree` 是Python标准库中的另一个模块,用于解析和修改XML文档。以下是一个示例代码:
```python
import xml.etree.ElementTree as ET
打开本地xml文件
xml_path = 'path/to/your/xmlfile.xml'
doc = ET.parse(xml_path)
root = doc.getroot()
获取根目录下的节点
root.find('.//tag_name').text = 'new_value'
修改属性
root.find('.//tag_name[@attribute="value"]').set('attribute', 'new_value')
添加新节点
new_node = ET.Element('new_node')
new_node.text = 'new_text'
root.append(new_node)
删除节点
root.remove(root.find('.//tag_name'))
将修改后的XML保存到文件
tree = ET.ElementTree(root)
tree.write(xml_path)
建议
选择合适的库:
根据XML文件的大小和复杂性,选择合适的库。对于简单的XML文件,可以使用字符串替换或`xml.etree.ElementTree`;对于复杂的XML文件,建议使用`xml.dom.minidom`或第三方库如`lxml`。
注意异常处理:
在处理文件时,要考虑到文件不存在、权限不足等异常情况,并进行相应的处理。
验证修改结果:
在修改完成后,建议对修改后的XML文件进行验证,确保修改正确无误。