Python Minidom修改/追加内容文件

时间:2014-03-13 17:24:49

标签: python xml minidom

从8个小时开始,我现在正在尝试解析XML并在xml中添加5行文本。我没有取得任何进展,writexml,toxml和saveXML似乎都不适用于minidom lib

我们要解析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 个答案:

答案 0 :(得分: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>

希望有所帮助。