Python:解析Windows-1251编码的XML
当我尝试用lxml来解析XML时,像这样:
tree = etree.parse('xml.xml')
我遇到了以下错误:
lxml.etree.XMLSyntaxError: Unsupported encoding windows-1251
我该如何读取这种编码的XML数据呢?
谢谢
1 个回答
5
我觉得你可能在用Python 2.x版本。
如果是这样的话,你需要使用codecs模块里的open()函数,然后这样做:
import codecs
with codecs.open(filename,'rb','cp1251') as f:
content = f.read()
tree = etree.parse(content)
我认为你得到的内容是从cp1251编码转换成了Unicode;不过我不太确定,因为我对Unicode的处理不太熟练。
如果真是这样的话,我想在读取之后,etree应该能够解析Unicode字符串,继续进行操作。不过我对etree也了解得不多。
需要注意的是,即使模式是'r',codecs.open()打开文件时总是以二进制模式进行。
希望这能帮到你。