将 XML 从字符串解析为元素
parsing XML from a string into an element
我在将 XML 从字符串直接解析为元素时遇到了一些麻烦。
我有一个 xml 文件,我已将其转换为字符串:
resp = requests.post(request_url, request_string, proxies=urllib.getproxies(), stream=True)
并且按照此处的建议:,我使用了内容而不是文本:
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。
谁能帮我?
我已经在这上面花了两个小时了。
我终于找到了一个很棒的库来帮助我解决问题: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)
还是谢谢!!!
我在将 XML 从字符串直接解析为元素时遇到了一些麻烦。 我有一个 xml 文件,我已将其转换为字符串:
resp = requests.post(request_url, request_string, proxies=urllib.getproxies(), stream=True)
并且按照此处的建议:,我使用了内容而不是文本:
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。 谁能帮我? 我已经在这上面花了两个小时了。
我终于找到了一个很棒的库来帮助我解决问题: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)
还是谢谢!!!