синтаксический анализ XML 1.1 управляющих символов с xml .etree.ElementTree - PullRequest
0 голосов
/ 15 апреля 2020

В Python я выполняю синтаксический анализ XML, содержащий управляющий символ:

import xml.etree.ElementTree as ET

tree = ET.fromstring('<?xml version="1.1" encoding="UTF-8"?><field>foo &#11; bar</field>')
print(tree.text)

Управляющие символы допускаются XML 1.1, но анализ не выполняется. Что-то мне не хватает, или xml .etree.ElementTree не поддерживает такие управляющие символы?

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Парсер ElementTree, по крайней мере, на linux, использует синтаксический анализатор системы. Сопровождающие libexpat не планируют поддерживать XML 1.1.

Пакет l xml, который предоставляет API, аналогичный ElementTree, использует libxml2 для анализа XML. Сопровождающие libxml2 также не планируют внедрять XML 1.1 (эта ссылка довольно старая, но домашняя страница libxml2 ссылается только на стандарт 1.0.

Вам нужно найти

  1. синтаксический анализатор, который фактически реализует XML 1.1
  2. Python привязок для синтаксического анализатора.
0 голосов
/ 23 апреля 2020

@ snakecharmerb прав. Рекомендую вам более толерантную библиотеку, может вам она понравится.

from simplified_scrapy import SimplifiedDoc,req,utils
html = '<?xml version="1.1" encoding="UTF-8"?><field>foo &#11; bar</field>'
doc = SimplifiedDoc(html)
print(doc.field.text)

Результат:

foo &#11; bar

Вот еще несколько примеров. https://github.com/yiyedata/simplified-scrapy-demo/blob/master/doc_examples

...