Разбор XML с декодированием в Python
XML-файл, который я пытаюсь прочитать, начинается с b' .
Не знаете, как решить проблему с декодированием?
2 ответа
Решение
Так что вы можете попробовать это, но это возвращает экземпляр элемента
import ast
import xml.etree.ElementTree as etree
tree = None
with open("property.xml", "r") as xml_file:
f = xml_file.read()
# convert string representation of bytes back to bytes
raw_xml_bytes= ast.literal_eval(f)
# read XML from raw bytes
tree = etree.fromstring(raw_xml_bytes)
Другой способ - прочитать файл и полностью преобразовать его в строковый файл, а затем перечитать его снова, это возвращает экземпляр ElementTree. Вы можете добиться этого, используя следующее:
tree = None
with open("property.xml", "r") as xml_file:
f = xml_file.read()
# convert string representation of bytes back to bytes
raw_xml_bytes= ast.literal_eval(f)
# save the converted string version of the XML file
with open('output.xml', 'w') as file_obj:
file_obj.write(raw_xml_bytes.decode())
# read saved XML file
with open('output.xml', 'r') as xml_file:
tree = etree.parse(f)
Открытие и чтение файла xml вернет данные типа bytes, которые имеют метод .decode() (см. https://docs.python.org/3/library/stdtypes.html#bytes.decode). Вы можете сделать следующее, используя соответствующее имя кодировки:
my_xml_text = xml_file.read().decode('utf-8')