【发布时间】:2026-01-25 16:35:02
【问题描述】:
我目前正在尝试加载一个 xml 文件并修改一对 xml 标签内的文本,如下所示:
<anode>sometext</anode>
我目前有一个名为 getText 的辅助函数,用于获取上面的文本 sometext。现在我需要修改childnodes 我猜,在节点内部修改一个具有上面显示的XML sn-p 的节点,将sometext 更改为othertext。常见的 API 补丁 getText 函数如下面的脚注所示。
所以我的问题是,这就是我们获取文本的方式,我该如何编写一个名为 setText(node,'newtext') 的配套辅助函数。如果它在节点级别上运行,我更喜欢它自己找到通往子节点的方式,并且运行良好。
上一个问题的答案是“I'm not sure you can modify the DOM in place”。这是真的吗? Minidom 是否已损坏,以至于它实际上是只读的?
作为脚注,要阅读<anode> 和</anode> 之间的文本,我很惊讶不存在直接简单的单个minidom 函数,并且Python xml 教程中建议使用这个小辅助函数:
import xml.dom.minidom
def getText(nodelist):
rc = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc.append(node.data)
return ''.join(rc)
# I've added this bit to make usage of the above clearer
def getTextFromNode(node):
return getText(node.childNodes)
Elsewhere 在 * 中,我看到了 2008 年接受的答案:
node[0].firstChild.nodeValue
如果这就是使用 minidom 阅读的难度,那么看到人们说“不要这样做!”我并不感到惊讶。当您询问如何编写可能会修改 XML 文档的节点结构的内容时。
更新下面的答案表明它并不像我想象的那么难。
【问题讨论】: