Python通过xml元素树添加新元素

2024-04-23 09:07:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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消失了

我看到了很多与这个主题相关的问题,其中大多数都是建议其他的软件包。 有什么办法可以妥善处理吗


Tags: infotreeversionxmlamutfencodinget
1条回答
网友
1楼 · 发布于 2024-04-23 09:07:46

处理指令不被视为XML元素。只需谷歌are processing instructions part of an XML,第一个结果表明:

Processing instructions are markup, but they're not elements.

由于您使用的包字面上被称为ElementTree,因此您可以合理地期望它的对象是元素树。如果我没记错的话,符合DOM的XML包可以支持XML中的非元素标记

对于名称空间问题,答案是堆栈溢出,在Remove ns0 from XML-您只需要注册在文档顶部元素中指定的名称空间。以下几点对我很有用:

ET.register_namespace("", "Buildtest")

至于空格,新元素没有任何空格。您可以分配给tail成员,以便在元素之后添加换行符

相关问题 更多 >