3

私はこのxml構造を持っています、

<root>

    <child1>
    </child1>
    <child2>
    </child2>
    <child3 />
    <extendedchild:name>
    </extendedchild:name>

</root>

rootルートがであり、子が常に次の要素であることを minidom で確認するにはどうすればよいですか?

child1
child2
child3
extendedchild

上記の「子リスト」( outofroot、notachild )にルート外またはそうでない要素も出力したい: ...

    <notachild />
</root>
<outofroot />

編集outofroot要素がminidomパーサーによって処理されているようです。xxxxxxx.xml has an error: junk after document element: line 12, column 0

4

2 に答える 2

1

ルート要素名のチェックに関しては、次のようにできるようです。

import xml.dom.minidom
dom = xml.dom.minidom.parseString(xmlString)
if dom.documentElement.tagName == "root" ...

ルートの ..in を反復できるはずです.childNodes

何かがルートの外側にある場合、それは整形式の XML ドキュメントではありません (ルート ノードは 1 つしか持つことができません)。

于 2012-09-17T09:01:47.843 に答える
1

minidom を使用して子をウォークスルーし、ルート ノードの名前が であることを確認できます"root"。その後、子を 1 つずつ処理して、他の要件を確認できます。

if not root.tagName == "root":
   # do something
for node in root.childNodes:
   # do something more

必要に応じて、子ノードを再帰的に処理できます。

def processChild(node):
    # do some checks on node
    for child in node.childNodes:
        processChild(child)
于 2012-09-17T09:04:15.543 に答える