2012-09-17 55 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。 –

相關問題