Python Minidom 修改/追加内容文件

标签 python xml minidom

自 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/

相关文章:

java - 将用户输入写入 XML 文件

Android tabHost 是隐形的?为什么它不与此 XML 一起显示?

python - 在 python 中迭代 Elementchildren

python - 在x节点minidom xml python之后插入

python xml 解析 (minidom)

python - keras > 加载保存的模型后总是相同的预测值

python - 将每个质数写在不同的行中(Python 3)

python - 扩展模块中的可比类型

java - 任何 Java "API"从 XSD 生成示例 XML?

python xml.dom.minidom.Attr 问题