Проверка Python XML на соответствие схеме lxml - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь проверить документ XML на соответствие его XSD на Python. В настоящее время я следую этому учебнику.

Я могу читать в своем XML-файле без проблем. Однако мне нужно предоставить тип кодировки для схемы. В противном случае возникает ошибка 'charmap' codec can't decode byte 0x81.

with open(os.path.join(settings.MEDIA_ROOT, xsd_filename), 'r', encoding='utf-8') as schema_file:
        schema_to_check = schema_file.read()

Тем не менее, когда я добавляю кодировку etree не может проанализировать содержимое файла? Возвращенная ошибка Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.

xmlschema_doc = etree.parse(StringIO(schema_to_check))

Я не уверен, что знаю, что происходит. С сайта lxml создается впечатление, что я должен оставить кодировку в покое, но я не уверен, почему учебник работает, а мой нет?

Моя версия Python - 3.6.4.

Заранее спасибо.

1 Ответ

0 голосов
/ 25 июля 2018

С тех пор я исправил свой код для непосредственного анализа файла. Это исправило мою проблему, и теперь я могу проверить свою схему.

Поправка к коду:

with open(os.path.join(settings.MEDIA_ROOT, xsd_filename), 'r', encoding='utf-8') as f:                                                
     doc = etree.parse(f)      
...