Python通过xml ElementTree添加新元素。

问题描述 投票:0回答:1

XML文件

<?xml version="1.0" encoding="utf-8"?>
<Info xmlns="BuildTest">
<RequestDate>5/4/2020 12:27:46 AM</RequestDate>
</Info>

我想在 Info 标签。

我是这样做的。

import xml.etree.ElementTree as ET

tree = ET.parse('example.xml')
root = tree.getroot()
ele = ET.Element('element1')
ele.text = 'ele1'
root.append(ele)
tree.write("output.xhtml")

輸出

<ns0:Info xmlns:ns0="BuildTest">
<ns0:RequestDate>5/4/2020 12:27:46 AM</ns0:RequestDate>
<element1>ele1</element1></ns0:Info>

三个问题。

  1. 该问题是: <?xml version="1.0" encoding="utf-8"?> 丢失。
  2. 命名空间是错误的。
  3. 命名空间是错误的。whitespace 的新元素不见了。

我看到很多与这个话题相关的问题,大部分都是建议使用其他的包,有什么办法可以正确处理吗?

python xml elementtree
1个回答
1
投票

处理指令不被认为是XML元素。只是谷歌 是XML处理指令的一部分,以及第一个结果状态。

处理指令 是标记,但它们不是元素。

因为你所使用的包实际上叫做 ElementTree,你可以合理地期望它的对象是元素树。如果我没记错的话,符合DOM标准的XML包可以支持XML中的非元素标记。

对于命名空间的问题,答案在堆栈溢出中,在 从XML中删除ns0 - 你只需要在文档的顶部元素中注册你指定的命名空间。下面的方法对我很有效。

ET.register_namespace("", "Buildtest")

至于空白处 - 新元素没有任何空白处。你可以把这个元素分配给 tail 成员在元素后添加一个换行符。

© www.soinside.com 2019 - 2024. All rights reserved.