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

Can't properly remove nested xml tags with Python using xml minidom

我正在尝试使用 Python 3.8 和 xml.dom.minidom 中内置的字符串来删除 xml 的一些嵌套标签。结果令人惊讶,解析器仅删除第一个或打开的标记并留下关闭标记。当然我错过了什么,但我看不到它是什么。

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>