使用Python更改XML文件中文本的最佳方法是什么?
假设我有一个简单的XML文件,名字叫'MyData.xml',里面的内容是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<myElement>foo</myElement>
我想把里面'foo'的文字改成'bar',改完后应该是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<myElement>bar</myElement>
完成这些后,我还想把改动保存下来。
那么,有什么最简单的方法来做到这一切呢?
4 个回答
3
这是我根据@Ryan的回答写的内容:
from xml.dom.minidom import parse
import os
# create a backup of original file
new_file_name = 'MyData.xml'
old_file_name = new_file_name + "~"
os.rename(new_file_name, old_file_name)
# change text value of element
doc = parse(old_file_name)
node = doc.getElementsByTagName('myElement')
node[0].firstChild.nodeValue = 'bar'
# persist changes to new file
xml_file = open(new_file_name, "w")
doc.writexml(xml_file, encoding="utf-8")
xml_file.close()
我不确定这是不是最简单的方法,但确实可以用。(@Javier的回答代码行数更少,但需要用到一些不常见的库)
3
对于一些快速且不太重要的XML处理,我非常喜欢 P4X。这个工具让你可以这样写:
import p4x
doc = p4x.P4X (open(file).read)
doc.myElement = 'bar'
4
使用Python的 minidom
基本上,你需要按照以下步骤进行:
- 把XML数据读入到一个DOM对象中
- 使用DOM的方法来修改这个文档
- 把新的DOM对象保存到一个新的XML文档中
Python的说明文档会在这个过程中给你很好的指导。