如何使用minidom检查xml节点是否在python中有子节点?
我正在编写一个递归函数来删除xml文件中的所有属性,我需要在再次调用同一函数之前检查一个节点是否有子节点。
我尝试过的: 我试图使用node.childNodes.length,但没有太多运气。还有其他建议吗?
由于
我的代码:
def removeAllAttributes(dom):
for node in dom.childNodes:
if node.attributes:
for key in node.attributes.keys():
node.removeAttribute(key)
if node.childNodes.length > 1:
node = removeAllAttributes(dom)
return dom
错误代码: RuntimeError:超出最大递归深度
答案 0 :(得分:2)
你处在一个无限循环中。这是你的问题:
node = removeAllAttributes(dom)
我认为你的意思是
node = removeAllAttributes(node)
答案 1 :(得分:0)
您可以尝试hasChildNodes()
- 尽管如果直接检查childNodes属性不起作用,您可能还有其他问题。
猜测,你的处理被抛弃了,因为你的元素没有元素子元素,但确实有文本子元素。你可以这样检查:
def removeAllAttributes(element):
for attribute_name in element.attributes.keys():
element.removeAttribute(attribute_name)
for child_node in element.childNodes:
if child_node.nodeType == xml.dom.minidom.ELEMENT_NODE:
removeAllAttributes(child_node)