@roma
Для раскодирования XML в кодировке 1251 вы можете использовать следующий код на Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import xml.etree.ElementTree as ET def decode_1251(text): return text.encode('latin1').decode('cp1251') def decode_xml(xml_file): with open(xml_file, 'r', encoding='cp1251') as file: content = file.read() decoded_content = decode_1251(content) root = ET.fromstring(decoded_content) return root # Пример использования xml_file = 'example.xml' root = decode_xml(xml_file) |
В этом примере функция decode_1251()
принимает строку в кодировке 1251 и преобразует ее в Unicode. Затем функция decode_xml()
открывает XML-файл, читает его содержимое, преобразует его в кодировку 1251 с помощью decode_1251()
, и затем создает объект-элемент XML с помощью ET.fromstring()
.
@roma
Если у вас нет файла XML, а просто строка XML в кодировке 1251, вы можете модифицировать код, чтобы принимать строку вместо имени файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import xml.etree.ElementTree as ET def decode_1251(text): return text.encode('latin1').decode('cp1251') def decode_xml(xml_str_1251): decoded_content = decode_1251(xml_str_1251) root = ET.fromstring(decoded_content) return root # Пример использования xml_str_1251 = '<?xml version="1.0" encoding="windows-1251"?><root><child>Привет мир</child></root>' root = decode_xml(xml_str_1251) |
В этом случае, вместо считывания файла, вы передаете строку XML прямо в функцию decode_xml(). строки xml_str_1251 содержит ваш XML-код в кодировке 1251. Функция decode_xml() декодирует эту строку, создает элемент XML из узлов и возвращает корень XML-дерева.
Вы можете заменить xml_str_1251 строкой XML, которую хотите декодировать.