0

私はこのようにルートを宣言しました:

root = ET.fromstring(xml_data)

このような XML コードがあるとします。

<a>
    <b>
        <c>
            <d>
                <e>
                    ...
                </e>
            </d>
        </c>
    </b>
</a>

要素ツリー内のこれらの各要素を反復処理する方法がよくわかりません。

私はやることを考えました:

while (True)
    for child in root
        print child.tag

しかし、これはこの無限の出力で終わりました:

a
a
a
a
a

私が何をしようとしているのかを理解してもらうために、2 つの XML コードを渡します。1 つはかなり大きくて複雑な XML コードで、もう 1 つは単純な XML コードです。大きな XML コード内に一致する XML がいくつあるかを調べる必要があります。

そのため、大きな XML の各要素を繰り返し処理し、それを小さな XML 要素のそれぞれと比較する必要があります。

どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

0

どんな解決策も再帰的になります

process_node(node n)
    do something with n.text if present
    for child in n.children
        process_node(child)

しかもトップレベルで

process_node(root)

処理をカスタマイズするために、必要に応じてノード名のテストを追加します。

于 2013-06-26T03:35:31.220 に答える