Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python通过xml元素树添加新元素_Python_Xml_Elementtree - Fatal编程技术网

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

Python通过xml元素树添加新元素,python,xml,elementtree,Python,Xml,Elementtree,XML文件 <?xml version="1.0" encoding="utf-8"?> <Info xmlns="BuildTest"> <RequestDate>5/4/2020 12:27:46 AM</RequestDate> </Info> 输出 <ns0:Info xmlns:ns0="BuildTest"> <ns0:RequestDate>5/4/2020 12:27:46 AM</ns0

XML文件

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

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

2020年5月4日12:27:46上午
ele1
三个问题:

  • 缺少
  • 名称空间是错误的
  • 新元素的
    空白
    已消失
  • 我看到了很多与这个主题相关的问题,其中大多数都是建议其他的软件包。
    有什么办法可以妥善处理吗

    处理指令不被视为XML元素。只有谷歌,第一个结果是:

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

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

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

    ET.register_namespace("", "Buildtest")
    

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

    XML声明是一种特殊的处理指令,易于添加。只要使用
    tree.write(“output.xhtml”,xml\u declaration=True,encoding=“utf-8”)
    @mzjn-谢谢,我学到了一些新东西。我从不为处理指令而烦恼,因为我所有的XML使用都是在我的程序既是XML的生产者又是消费者的情况下进行的。
    ET.register_namespace("", "Buildtest")