Как выводить ссылки на объекты XML

Я использую Python xml.etree.ElementTree для вывода XML. Я хочу вывести его со ссылками на сущности, которые будут заменены при анализе XML.

обычно '&' заменяется символом &, потому что '&' используется для объявления ссылок на сущности. Однако я действительно хочу написать ссылку на сущность. Например, я хочу написать XML-файл, содержащий ссылку на сущность &manifestName;:

>>> from xml.etree.ElementTree import Element, tostring
>>> manifest = Element('manifest')
>>> manifest.text = '&manifestName;'
>>> tostring(manifest)

Что возвращает экранированный амперсанд:

'<manifest>&amp;manifestName;</manifest>'

Желаемый XML будет:

'<manifest>&manifestName;</manifest>'

Я пробовал различные уловки, например &#38;, \&, &&, но они не работают. Амперсанды, которые они содержат, всегда отображаются как &amp;.


person John McGehee    schedule 02.11.2011    source источник
comment
См. stackoverflow.com/questions/2360598/   -  person    schedule 03.11.2011


Ответы (1)


Я решил пойти с относительно приятным хаком. В тексте я использую && для обозначения экранированного &. ElementTree преобразует это в &amp;&amp;. В конце я просто делаю на нем замену строки:

>>> from xml.etree.ElementTree import Element, tostring
>>> manifest = Element('manifest')
>>> manifest.text = '&&manifestName;'
>>> tostring(manifest).replace('&amp;&amp;', '&')

Результатом является ссылка на сущность, которую я хочу:

'<manifest>&manifestName;</manifest>'
person John McGehee    schedule 03.11.2011
comment
У меня проблемы с реализацией вашего решения. Не могли бы вы проверить этот вопрос? stackoverflow.com/ questions / 56892938 / - person posfan12; 07.07.2019