无法使用 xml minidom 使用 Python 正确删除嵌套的 xml 标签



我正在尝试删除一些嵌套的xml标记,这些标记使用Python 3.8表示为字符串,并构建在xml.dom.minidom中。结果令人惊讶,解析器只删除第一个或打开的标记,而留下关闭的标记。我肯定错过了什么,但我看不清是什么。

import xml.dom.minidom as xml
StringXML = "<root><test1><test2></test2></test1><test1><test2></test2></test1><test1><test2></test2></test1><test1><test2></test2></test1></root>"
a = xml.parseString(StringXML)
num = 0
while (a.getElementsByTagName('test2').length > num):
if(a.getElementsByTagName('test2')[num]):
a.getElementsByTagName('test2')[num].parentNode.removeChild(a.getElementsByTagName('test2')[num])
a.getElementsByTagName('test2')[num].unlink()
num = num +1
print(a.toxml())

如果只想删除所有test2元素,就不需要增加计数器。只需对getElementsByTagName('test2')返回的项进行迭代。

import xml.dom.minidom as xml
StringXML = "<root><test1><test2></test2></test1><test1><test2></test2></test1><test1><test2></test2></test1><test1><test2></test2></test1></root>"
a = xml.parseString(StringXML)
for test2 in a.getElementsByTagName('test2'):
test2.parentNode.removeChild(test2)
# Need to add empty text node to get <test1></test1> serialization
for test1 in a.getElementsByTagName('test1'):
test1.appendChild(a.createTextNode(''))
print(a.toprettyxml())

输出:

<?xml version="1.0" ?>
<root>
<test1></test1>
<test1></test1>
<test1></test1>
<test1></test1>
</root>

相关内容

  • 没有找到相关文章

最新更新