Разбор 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')
Другие вопросы по тегам