我有一个大型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
此错误会在不同位置继续重复。如何避免这种类型的错误。任何帮助将受到高度赞赏。
答案 0 :(得分:1)
(张贴作为后来读者的答案)
如果错误标记值为\xA0
,则文件未正确编码为utf-8
如果文件只有8位字符,则需要将XML声明更改为其他内容,可能是<?xml version="1.0" encoding="iso-8859-1" ?>
。