Проблема парсинга XML, некоторые бенгальские символы показывают ParseError в Python ElementTree - PullRequest
0 голосов
/ 30 января 2019

Некоторые из бенгальских символов, таких как «ৎ», «।»показывает ParseError, когда я пытаюсь проанализировать xml-файл «temp.xml» ниже:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
  <WORD>
  <অ>
    <অসুখে>অসুখ</অসুখে>
    <অসৎকে>অসৎ</অসৎকে>
  </অ>
  </WORD>
</doc>

, чтобы проанализировать его с помощью python:

import xml.etree.ElementTree as ET    

trees = ET.parse('temp.xml')
roots = trees.getroot()

выдает ошибку:

File "<string>", line unknown
  ParseError: not well-formed (invalid token): line 6, column 11

ошибка для строки файла XML (для символа 'ৎ'):

<অসৎকে>অসৎ</অসৎকে>

Как я могу разобрать эти символы?

1 Ответ

0 голосов
/ 31 января 2019

Похоже, что синтаксический анализатор XML не был обновлен для отражения изменений в XML 1.0, пятом издании, относительно разрешенных символов в именах элементов, атрибутов и т. Д.

XML-документ в вопросе отклоненElementTree и minidom (которые используют парсер Expat), но они принимаются lxml (который использует libxml2).

Правила для допустимых символов в исходной рекомендации XML 1.0 от 1998 года были основаны на Unicode 2.0.Бенгальский персонаж «ৎ» (U + 09CE) был добавлен в Unicode 4.1.0 (выпущен в 2005 году).Символы, не включенные в Unicode 2.0, изначально не допускались в именах элементов.В пятом издании XML 1.0 от 2008 г. (https://www.w3.org/TR/REC-xml/), ограничения были ослаблены, так что можно использовать практически любой символ.

Подробнее об этом см. В разделе «Обоснование» в разделе «Предложения для XML».Раздел «Имена (ненормативный раздел») в списке ошибок для XML 1.0, четвертое издание (https://www.w3.org/XML/xml-V10-4e-errata).

См. Также https://norman.walsh.name/2008/02/07/xml105e.

...