我正在添加节点以使用命名空间:
xmlns:ns0="http://someplace.net/xml/"
在插入子节点之前,您必须首先到达父节点,在我的情况下,findall()
为我提供了如下所示的父节点:
<ns0:parent xmlns:ns0="http://someplace.net/xml/" someattrib="some value">
我试图像这样构建一个子节点:
node = ET.Element('mytag')
或
node = ET.Element('ns0:mytag')
或
node = ET.Element('ns0:mytag')
node.set('xmlns:ns0', "http://someplace.net/xml/")
然后
parent.extend(node)
但是结果树中找不到节点。这三种方法都不起作用。
我在这里缺少什么?
答案 0 :(得分:1)
我明白了。
我应该使用ET.SubElement(parent, node)
来替换ET.Element
而忘记.extend()
。
我还应该从标签中删除硬编码的名称空间前缀。
完成上述更改后,它按预期工作。