假设我有一个名为“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 的答案代码行数较少,但需要非标准库)
您可能还想查看 Uche Ogbuji 出色的 XML 数据绑定库 Amara: http ://uche.ogbuji.net/tech/4suite/amara
(此处的文档:http: //platea.pntic.mec.es/~jmorilla/amara/manual/)
Amara 最酷的地方在于它将 XML 文档转换为 Python 对象,因此您可以执行以下操作:
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
(它创建了一个包含 Name 和 Value 元素的 Record 元素(这些元素又包含 name 和 value 变量的值))。