假设我有一个名为'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>
完成后,我想保存更改。
实现这一切的最简单最简单的方法是什么?
答案 0 :(得分:4)
使用Python的minidom
基本上您将采取以下步骤:
尽管这个过程,python规范应该很好地握住你的手。
答案 1 :(得分:3)
对于快速,非关键的XML操作,我非常喜欢P4X。它让你这样写:
import p4x
doc = p4x.P4X (open(file).read)
doc.myElement = 'bar'
答案 2 :(得分:3)
这是我根据@Ryan's answer撰写的内容:
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's answer代码行少,但需要非标准库)
答案 3 :(得分:1)
您还可以查看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变量的值))。