Python xml .etree.ElementTree синтаксический анализ силы - PullRequest
0 голосов
/ 22 марта 2020

Я получаю много XML файлов, и некоторые из них имеют неправильную кодировку (например, в xml заголовок - ISO-8859-1, но все строки в UTF-8 и т. Д.)

Для синтаксического анализа используется xml .etree.ElementTree, и это также читает заголовок xml с кодировкой (что иногда неверно)

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

Я хотел бы вызвать другую кодировку и игнорировать это из заголовка.

Есть ли простой способ, как это сделать?

1 Ответ

2 голосов
/ 22 марта 2020

Если вы уверены в кодировке, вы можете использовать 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').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...