3

我有这个xml结构,

<root>

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

</root>

我怎样才能检查 minidom ,那个 root 是root,那个 children 总是下面的元素?

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" ...

您应该能够 for..in 迭代根目录的.childNodes.

如果某些内容在根之外,则它不是格式良好的 XML 文档(只能有一个根节点)。

于 2012-09-17T09:01:47.843 回答
1

您可以使用 minidom 遍历子节点并验证根节点的名称是"root". 然后,您可以一次处理一个子项并验证其他要求。

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 回答