假设我有一个名为“ MyData.xml”的现有的简单XML文件,其中包含以下内容:
<?xml version="1.0" encoding="utf-8" ?>
<myElement>foo</myElement>
我希望将“foo”的文本值更改为“bar”,结果如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<myElement>bar</myElement>
完成后,我想保存更改。
实现所有这些的最简单和最简便的方法是什么?
使用Python的minidom
基本上,您需要执行以下步骤:
Python规范应该可以很好地引导您完成此过程。
对于快速、非关键性的XML操作,我非常喜欢使用P4X。它让你可以像这样编写代码:
import p4x
doc = p4x.P4X (open(file).read)
doc.myElement = 'bar'
这是我根据@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的答案代码行数更少,但需要非标准库)
record = doc.xml_create_element(u'Record')
nameElem = doc.xml_create_element(u'Name', content=unicode(name))
record.xml_append(nameElem)
valueElem = doc.xml_create_element(u'Value', content=unicode(value))
record.xml_append(valueElem
(它创建一个包含名称和值元素的记录元素(这些元素又包含名称和值变量的值))。