我尝试使用ElementTree
解析的GET服务,其内容我无法控制,包含非UTF8特殊字符:
respXML = response.content.decode("utf-8")
respRoot = ET.fromstring(respXML)
第二行抛出
xml.etree.ElementTree.ParseError:对无效字符编号的引用:第3591行,第39栏
如何判断XML是否会被解析,而不管字符集如何,如果我发现非法字符,我可以在以后运行替换?例如,是否有包含所有内容的编码?我知道我可以搜索并替换输入的XML字符串,但我更愿意先解析它,因为我的解析会将其转换为更易于搜索的数据结构。
有问题的特殊字符是
,但我希望能够摄取任何字符。整个标记为<literal>Alzheimers disease</literal>
。
答案 0 :(得分:2)
在@tdelaney的帮助下,我能够通过将输入XML刷新为字符串来克服这个障碍:
respXML = response.content.decode("utf-8")
scrubbedXML = re.sub('&.+[0-9]+;', '', respXML)
respRoot = ET.fromstring(scrubbedXML)