cElementTree.ParseError:顶层的多个元素

时间:2013-03-11 22:29:40

标签: python xml-parsing xsd

我有这个python代码接受XML文件作为输入。当我执行执行时,我收到问题标题中指示的错误:

for event,element in cElementTree.iterparse(io, events = ( b'start',b'end')):
    if event == b'start':
        self.TreeBuilder.start(element.tag, element.attrib)

错误

> File "/usr/lib/python2.7/site-packages/pymzml/run.py", line 370, in
> __init__
>     self.TreeBuilder.start(element.tag, element.attrib) 
      cElementTree.ParseError: multiple elements on top level

帮我解决这个问题!谢谢。

1 个答案:

答案 0 :(得分:1)

如果我猜对了,看起来你正在解析一个带有多个根节点的XML片段,而TreeBuilder期待一个有根文档。

尝试使用调用包装解析以创建具有单个根节点的树。换句话说:

self.TreeBuilder.start("root", {})
[...]
for event,element in cElementTree.iterparse(io, events = ( b'start',b'end')):
    if event == b'start':
        self.TreeBuilder.start(element.tag, element.attrib)
[...]
self.TreeBuilder.end("root")

请记住,生成的DOM在顶部有这个额外元素,并修改您的处理以将其考虑在内。