使用Python更改XML文件中文本的最佳方法是什么?

5 投票
4 回答
7794 浏览
提问于 2025-04-11 09:25

假设我有一个简单的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

基本上,你需要按照以下步骤进行:

  1. 把XML数据读入到一个DOM对象中
  2. 使用DOM的方法来修改这个文档
  3. 把新的DOM对象保存到一个新的XML文档中

Python的说明文档会在这个过程中给你很好的指导。

撰写回答