2017-03-08 41 views
0

我有一個很大的XML文件(200萬對象的詳細信息),其內容類似於下圖所示。文件大小是657MBcElementTree.ParseError:格式不正確(無效令牌)

<?xml version="1.0" encoding="UTF-8?> 
<root> 
    <item> 
     <rank>1</rank> 
     <landinglink>www.google.com</landinglink> 
     <descrip>some text</descrip> 
    </item> 
    <item> 
     <rank>1</rank> 
     <landinglink>www.facebook.com</landinglink> 
     <descrip>some text</descrip> 
    </item> 
    <item> 
     <rank>1</rank> 
     <landinglink>www.xyz.com</landinglink> 
     <descrip>some text</descrip> 
    </item> 
    . 
    . 
    . 
    . 
    . 
    . 
    . 
</root> 

我試圖打印所有的'連接'。我正在使用的代碼如下所示。

import xml.etree.cElementTree as ET 
for event, elem in ET.iterparse("filename.xml"): 
    if event == 'end' and elem.tag == 'item': 
     print elem.find('landinglink').text 

但是,當執行代碼時,它給了我下面的錯誤。

Traceback (most recent call last): 
    File "D:/test.py", line 2, in <module> 
    for event, elem in ET.iterparse("filename.xml"): 
    File "<string>", line 91, in next 
cElementTree.ParseError: not well-formed (invalid token): line 1338, column 298 

此錯誤在不同位置持續重複。如何避免這種類型的錯誤。任何幫助將不勝感激。

+0

那條線上,那個位置是什麼? – cco

+0

一些文字說明,但它包含xA0種類的一些錯誤 –

+0

如果該值爲'\ xA0',那麼你的文件沒有正確編碼爲utf-8。 – cco

回答

1

(標示爲後來的讀者一個答案)

如果壞標記值是\xA0,則該文件沒有正確地編碼爲UTF-8。
如果文件只有8位字符,則需要將XML聲明更改爲其他內容,可能是<?xml version="1.0" encoding="iso-8859-1" ?>

相關問題