Python Minidom 修改/追加内容文件
我已经花了8个小时在解析一个XML文件,并想在里面添加5行文本。可是我一点进展都没有,使用minidom库里的writexml、toxml或saveXML都没有效果。
我们想解析这个XML文件,并在关闭标签之前添加一些行。听起来很简单,对吧?
我的情况是:有一个叫做updates.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里面包含了正确的新行,但是文件就是没有更新。有人能解释一下这是为什么吗?
1 个回答
2
解析文档,获取 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>
希望这能帮到你。