自 8 小时以来,我现在尝试解析 XML 并向该 xml 添加 5 行文本。我确实没有取得任何进展,而且 writexml、toxml 和 saveXML 似乎都无法在 minidom 库中工作
我们想要解析 xml 并在结束标记之前添加一些行。听起来很容易?
所以我的情况是: 名为 update.xml 的文件
<UpdateSite> <SomeTags></SomeTags> <SomeTags2></SomeTags2> <SomeTags3></SomeTags3> <SomeTags></SomeTags> <SomeTags2></SomeTags2> <SomeTags3></SomeTags3> <SomeTags></SomeTags> <SomeTags2></SomeTags2> <SomeTags3></SomeTags3> </UpdateSite>
我们正在做什么:
dom = xml.dom.minidom.parse("updates.xml")
updateSite=dom.getElementsByTagName('UpdateSite')
updateSite.append('<SomeTags>')
updateSite.append("<product>xx.xxxxxx.xxx</product>")
updateSite.append("<version style=\\"eclipse\\">"+$cleanVersion+"</version>")
updateSite.append("<resource style=\\"executable\\">SomeURL</resource>)
updateSite.append("</update>")
dom.saveXML(self, updateSite)
dom.writeXML(self, file_handle)
dom.toxml(self)
updateSite 包含正确的新行,但文件只是未更新。谁能解释一下吗?
最佳答案
解析文档,获取 UpdateSite
节点,向其附加一个 Text
节点。然后将打开的文件传递给 dom.writexml()
:
from xml.dom.minidom import parse, Text
dom = parse("updates.xml")
updateSite = dom.getElementsByTagName('UpdateSite')[0]
text = Text()
text.data = 'test'
updateSite.appendChild(text)
with open("new_updates.xml", "wb") as f:
dom.writexml(f)
生成以下 xml:
<?xml version="1.0" ?><UpdateSite>
<SomeTags/>
<SomeTags2/>
<SomeTags3/>
<SomeTags/>
<SomeTags2/>
<SomeTags3/>
<SomeTags/>
<SomeTags2/>
<SomeTags3/>
test</UpdateSite>
希望有帮助。
关于Python Minidom 修改/追加内容文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386274/