5

假设我有一个名为“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>

完成后,我想保存更改。

完成这一切的最简单和最简单的方法是什么?

4

4 回答 4

4

使用 Python 的minidom

基本上你会采取以下步骤:

  1. 将 XML 数据读入 DOM 对象
  2. 使用 DOM 方法修改文档
  3. 将新的 DOM 对象保存到新的 XML 文档

在这个过程中,python 规范应该很好地握住你的手。

于 2008-10-07T16:29:06.753 回答
3

对于快速、非关键的 XML 操作,我非常喜欢P4X。它让你这样写:

import p4x
doc = p4x.P4X (open(file).read)
doc.myElement = 'bar'
于 2008-10-07T16:29:04.053 回答
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 的答案代码行数较少,但需要非标准库)

于 2008-10-07T21:07:57.360 回答
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 变量的值))。

于 2008-10-07T21:42:17.293 回答