我得到了许多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')
。