2012-09-17 23 views
2

我有这样的XML结构,Minidom:我如何检查我是否有预期的根和儿童?

<root> 

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

</root> 

如何检查与minidom命名,这根是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

+0

似乎'outofroot'元素被分析器处理,它提供了'xxxxxxx.xml有一个错误:文档元素后的垃圾:行12,列0' –

回答

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) 
+0

'root ='?,'root = documentElement'? –

+0

是的,'root = doc.documentElement' –

1

至于根元素名称检查,貌似可以做这样的:

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

你应该能够在的for..in根的.childNodes迭代。

如果根之外有东西,它不是格式良好的XML文档(它只能有一个根节点)。

+0

这似乎是'outofroot'被处理解析器,它给'xxxxxxx.xml有错误:文档元素之后的垃圾:第12行,第0列' –

+0

'root ='?,'root = documentElement'? –

+1

只要没有根据,它就会被它不允许的事实所对待。 :)是的,它应该是'documentElement',如果它的行为像普通的DOM。 –

相关问题