使用 ElementTree 解析带有特殊字符的 XML
Parsing XML with special chars using ElementTree
我尝试使用 ElementTree
解析的 GET 服务,其内容我无法控制,包含非 UTF8 特殊字符:
respXML = response.content.decode("utf-8")
respRoot = ET.fromstring(respXML)
第二行抛出
xml.etree.ElementTree.ParseError: reference to invalid character number: line 3591, column 39
如何确保 XML 得到解析而不考虑字符集,如果我以后发现非法字符,我可以 运行 替换它?例如,是否有包含所有内容的编码?我知道我可以搜索并替换输入的 XML 字符串,但我更愿意先解析它,因为我的解析会将其转换为更容易搜索的数据结构。
有问题的特殊字符是 
但我希望能够摄取任何字符。整个标签是<literal>Alzheimers disease</literal>
.
在@tdelaney 的帮助下,我能够通过将输入 XML 擦除为字符串来克服这个障碍:
respXML = response.content.decode("utf-8")
scrubbedXML = re.sub('&.+[0-9]+;', '', respXML)
respRoot = ET.fromstring(scrubbedXML)
我尝试使用 ElementTree
解析的 GET 服务,其内容我无法控制,包含非 UTF8 特殊字符:
respXML = response.content.decode("utf-8")
respRoot = ET.fromstring(respXML)
第二行抛出
xml.etree.ElementTree.ParseError: reference to invalid character number: line 3591, column 39
如何确保 XML 得到解析而不考虑字符集,如果我以后发现非法字符,我可以 运行 替换它?例如,是否有包含所有内容的编码?我知道我可以搜索并替换输入的 XML 字符串,但我更愿意先解析它,因为我的解析会将其转换为更容易搜索的数据结构。
有问题的特殊字符是 
但我希望能够摄取任何字符。整个标签是<literal>Alzheimers disease</literal>
.
在@tdelaney 的帮助下,我能够通过将输入 XML 擦除为字符串来克服这个障碍:
respXML = response.content.decode("utf-8")
scrubbedXML = re.sub('&.+[0-9]+;', '', respXML)
respRoot = ET.fromstring(scrubbedXML)