0

minidomを使用してpythonでxmlノードに子があるかどうかを確認するにはどうすればよいですか?

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: 最大再帰深度を超えました

4

2 に答える 2

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)           
于 2013-07-12T19:15:18.643 に答える