cElementTree.ParseError:格式不正确(无效令牌)

时间:2017-03-08 05:38:14

标签: python python-2.7 xml-parsing

我有一个大型XML文件(200万个对象的详细信息),其内容类似于下面所示。文件大小为657MB

<?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>

我正在尝试打印所有'landinglink'。我使用的代码如下所示。

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

此错误会在不同位置继续重复。如何避免这种类型的错误。任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

(张贴作为后来读者的答案)

如果错误标记值为\xA0,则文件未正确编码为utf-8 如果文件只有8位字符,则需要将XML声明更改为其他内容,可能是<?xml version="1.0" encoding="iso-8859-1" ?>