Ответ 1
Когда ваш XML содержит &
, это приведет к тексту &
.
Когда вы используете это в HTML, это будет отображаться как &
.
У меня есть XML-текст, который я хочу отобразить на странице HTML. Этот текст содержит амперсанд, который я хочу отобразить в представлении его сущности: &
.
Как избежать этого амперсанда в исходном XML? Я пробовал &
, но он декодируется как фактический символ амперсанда (&
), который недействителен в HTML.
Поэтому я хочу избежать его таким образом, чтобы он отображался как &
на веб-странице, использующей вывод XML.
Когда ваш XML содержит &
, это приведет к тексту &
.
Когда вы используете это в HTML, это будет отображаться как &
.
Согласно §2.4 спецификации XML 1.0, вы должны иметь возможность использовать &
,
Я пробовал & но это не разрешено.
Вы уверены, что это не другая проблема? XML явно определяет это как способ избежать амперсандов.
Символ &
сам по себе является escape-символом в XML, поэтому решение состоит в том, чтобы объединить его и десятичный эквивалент Unicode для &
тем самым гарантируя отсутствие ошибок синтаксического анализа XML. То есть, замените символ &
&
,
Знаки CDATA?
<![CDATA[
This is some text with ampersands & other funny characters. >>
]]>
&
должен работать отлично, Wikipedia имеет Список предопределенных сущностей в XML.
В моем случае мне пришлось изменить его на %26
.
Мне нужно было избежать &
в URL-адресе. Так что &
не сработало для меня.
Функция urlencode изменяет &
на %26
. Таким образом, ни XML, ни механизм URL-адреса браузера не жаловались на URL-адрес.
Я пробовал & amp, но это не сработало. Основываясь на ответе Wim ten Brink, я попробовал и amp; amp, и это сработало.
One of my fellow developers suggested me to use & and that worked regardless of how many times it may be rendered.
&
- это способ представления амперсанда в большинстве разделов XML-документа.
Если вы хотите, чтобы XML отображался в HTML, вам нужно сначала создать правильно закодированный XML (который включает в себя изменение &
до &
), а затем использовать его для создания правильно закодированного HTML (который включает в себя повторное изменение &
до &
). Это приводит к:
&amp;
Более подробное объяснение XML-кодирования см. в разделе
<xsl:text disable-output-escaping="yes">& </xsl:text>
выполнит трюк.
Как насчет использования юникода \u0026
? Работает для меня в моих XML файлах Android. Если возникают проблемы, кто-то сообщил мне.
Посмотрите, как выглядит ваш XML ниже.
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES<>'GCF'
<Query>
</Employees>
Вы не можете использовать <>
напрямую, поскольку он выдает ошибку. В этом случае вы можете использовать <>
взамен этого.
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES <> 'GCF'
<Query>
</Employees>
Нажмите здесь, чтобы просмотреть все коды.
Связанная проблема заключается в том, как кодировать содержимое элемента XML, когда такой контент содержит амперсанд - если XML является частью URI, представленной с действием GET. (Оставив в стороне мудрость такого API-интерфейса, с этим мне пришлось столкнуться сегодня.) Я попробовал все, что упоминалось выше, и единственное, что действительно работало, было %26amp;
. %26
был необходим для URL-кодирования первый символ в XML-кодировке для амперсанда. amp;
, следующий за %26
, был необходим, поскольку XML-часть URI загружалась в сервер XML-документа. Поэтому в этом забавном сценарии необходимо было скреплять обе методологии кодирования вместе.