使用ElementTree复制命名空间和根元素属性

时间:2018-04-23 18:53:41

标签: python xml

尝试复制以下根元素,包括命名空间:

<ns0:StdFX1.3 xmlns:ns0="http://website.com/schemas/StdFX1.3.In" 
CutOff="2200LON" DataSource="" SpotDataSource="">

</ns0:StdFX1.3>

到目前为止我的代码是:     

import xml.etree.ElementTree as ET

ET.register_namespace("", "http://website.com/schemas/StdFX1.3.In")
top = ET.Element('{http://website.com/schemas/StdFX1.3.In}Stuff')

它只能让我得到以下结果:

<?xml version='1.0' encoding='UTF-8'?>
< xmlns="http://website.com/schemas/StdFX1.3.In">

1 个答案:

答案 0 :(得分:0)

我放弃并在最终对象上使用字符串替换。

root.tostring().replace("mangled toplevel namespace", '<ns0:StdFX1.3 xmlns:ns0="http://website.com/schemas/StdFX1.3.In" 
    CutOff="2200LON" DataSource="" SpotDataSource="">')

同样适用于结束标签。任何其他方式都不会保留我指定的更改。

fromString方法返回元素树。我只是提交XML所以没有,所以我不记得这是否会影响您所需的更改,但是您获得了所需的XML。