2013-03-11 35 views
0

我有這個python代碼接受作爲輸入的XML文件。當我運行的執行,我得到這個問題的標題所示的錯誤:cElementTree.ParseError:頂層的多個元素

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 

幫我解決這個問題!謝謝。

+2

我打算在這裏出去,說這個問題可能是你在頂層有多個元素。 – Cairnarvon 2013-03-11 22:35:07

+0

你有一個正常的'mzML'文件有這個問題嗎?如果是這樣,你可以在[github上的pymzML](https://github.com/pymzml/pymzML)上提交錯誤報告/修正或提供[us](http://pymzml.github.io/intro.html#聯繫人信息)示例文件? – user1251007 2013-12-09 22:59:02

回答

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有此額外的元素在頂部和修改您的處理考慮到這一點。

+0

謝謝你David!它的工作 – 2013-03-11 22:58:10

+0

不客氣。如果這照顧你的問題,接受我的答案表示讚賞。 – 2013-03-11 23:07:31