cElementTree.ParseError:顶层多个元素

0 投票
1 回答
1726 浏览
提问于 2025-04-17 18:44

我有一段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 个回答

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在顶部会有这个额外的元素,所以在处理的时候要考虑到这一点。

撰写回答