Minidom:我如何检查我是否有预期的根和孩子?

时间:2012-09-17 08:56:56

标签: python xml minidom

我有这个xml结构,

<root>

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

</root>

我如何检查minidom,root是root,并且孩子总是跟随元素?

child1
child2
child3
extendedchild

我还想在上面的“子列表”( outofroot,notachild )中打印超出或不符合的元素: ...

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

修改: 似乎outofroot解析器会处理minidom元素,它会xxxxxxx.xml has an error: junk after document element: line 12, column 0

2 个答案:

答案 0 :(得分:1)

就根元素名称检查而言,看起来你可以这样做:

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

您应该能够在根.childNodes上进行迭代。

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

答案 1 :(得分: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)