Python xml.etree.ElementTree解析强制编码



我得到了许多XML文件,其中一些文件的编码错误(例如,在XML标头中是ISO-8859-1,但所有字符串都是UTF-8,等等(

用于解析的是xml.etree.ElementTree,这也读取带有编码的xml头(有时是错误的(

input_element = xml.etree.ElementTree.parse("input.xml").getroot()

我想强制进行另一种编码,并忽略标头中的这一点。

有什么简单的方法可以做到这一点吗?

如果您确定编码,可以使用open()将文件读取为字符串,然后使用ElementTree.fromstring()将该字符串转换为XML文档。

with open("input.xml", encoding="Windows-1252") as fp:
xml_string = fp.read()
tree = ElementTree.fromstring(xml_string)

这将忽略XML声明,因为文件已经被解码,尽管是手动的。对于普通/兼容的XML文档,不建议使用此方法,而应使用ElementTree.parse('filename')