将XML从字符串解析为元素

时间:2015-05-18 10:28:12

标签: python xml unicode elementtree

我有一些麻烦要将字符串中的XML直接解析为Element。 我有一个xml文件,我已将其转换为字符串:

resp = requests.post(request_url, request_string,   proxies=urllib.getproxies(), stream=True)

按照此处的建议:https://stackoverflow.com/a/25023776/1551810,我使用了contenet而不是文本:

response_tree = ET.fromstring(resp.content)

我显然在XML文件中有一个语法错误:

XMLSyntaxError: Input is not proper UTF-8, indicate encoding !
Bytes: 0xB0 0x20 0x4E 0x6F, line 12, column 35

我试过这个来编码内容,但无济于事:

ET.fromstring(resp.content.encode('utf8'))

我有比以前更多的XMLSYntaxError。 谁能帮我? 我已经花了两个小时这个。

1 个答案:

答案 0 :(得分:1)

我终于找到了一个帮助我解决问题的好库:cchardet(https://pypi.python.org/pypi/cchardet/0.3.5) 我跟着@deets的建议。

import cchardet
charac_coding_desired = 'UTF-8'
encoding = cchardet.detect(resp.content)['encoding']
if charac_coding_desired != encoding:
    strg= resp.content.decode(encoding, resp.content).encode(charac_coding_desired)

现在我可以粗暴地解析字符串:

ET.fromstring(strg)

非常感谢!!!