【问题标题】:cElementTree.ParseError: multiple elements on top levelcElementTree.ParseError:顶层有多个元素
【发布时间】:2013-02-27 07:09:34
【问题描述】:

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

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

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

【问题讨论】:

  • 我要在这里冒个险,说问题可能是顶层有多个元素。
  • 普通的mzML文件有这个问题吗?如果是这样,您可以在pymzML on github 提交错误报告/修复或提供us 示例文件?

标签: python xml-parsing xsd


【解决方案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 在顶部有这个额外的元素,并修改您的处理以将其考虑在内。

【讨论】:

  • 不客气。如果这解决了您的问题,请接受我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 2019-06-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
相关资源
最近更新 更多