我有这个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
答案 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)