Как избежать амперсандов в XML, чтобы они отображались как объекты в HTML?

У меня есть XML-текст, который я хочу отобразить на странице HTML. Этот текст содержит амперсанд, который я хочу отобразить в представлении его сущности: &.

Как избежать этого амперсанда в исходном XML? Я пробовал &, но он декодируется как фактический символ амперсанда (&), который недействителен в HTML.

Поэтому я хочу избежать его таким образом, чтобы он отображался как & на веб-странице, использующей вывод XML.

Ответ 1

Когда ваш XML содержит &, это приведет к тексту &.

Когда вы используете это в HTML, это будет отображаться как &.

Ответ 2

Согласно §2.4 спецификации XML 1.0, вы должны иметь возможность использовать & ,

Я пробовал & но это не разрешено.

Вы уверены, что это не другая проблема? XML явно определяет это как способ избежать амперсандов.

Ответ 3

Символ & сам по себе является escape-символом в XML, поэтому решение состоит в том, чтобы объединить его и десятичный эквивалент Unicode для & тем самым гарантируя отсутствие ошибок синтаксического анализа XML. То есть, замените символ & & ,

Ответ 4

Знаки CDATA?

     <![CDATA[
       This is some text with ampersands & other funny characters. >>
     ]]>

Ответ 6

В моем случае мне пришлось изменить его на %26.

Мне нужно было избежать & в URL-адресе. Так что &amp; не сработало для меня. Функция urlencode изменяет & на %26. Таким образом, ни XML, ни механизм URL-адреса браузера не жаловались на URL-адрес.

Ответ 7

Я пробовал & amp, но это не сработало. Основываясь на ответе Wim ten Brink, я попробовал и amp; amp, и это сработало.

One of my fellow developers suggested me to use &#x26; and that worked regardless of how many times it may be rendered.

Ответ 8

&amp; - это способ представления амперсанда в большинстве разделов XML-документа.

Если вы хотите, чтобы XML отображался в HTML, вам нужно сначала создать правильно закодированный XML (который включает в себя изменение & до &amp;), а затем использовать его для создания правильно закодированного HTML (который включает в себя повторное изменение & до &amp;). Это приводит к:

&amp;amp;

Более подробное объяснение XML-кодирования см. в разделе

Какие символы мне нужно выполнить в документах XML?

Ответ 9

<xsl:text disable-output-escaping="yes">&amp;&nbsp;</xsl:text> выполнит трюк.

Ответ 10

Как насчет использования юникода \u0026? Работает для меня в моих XML файлах Android. Если возникают проблемы, кто-то сообщил мне.

Ответ 11

Посмотрите, как выглядит ваш XML ниже.

<Employees Id="1" Name="ABC">
  <Query>
    SELECT * FROM EMP WHERE ID=1 AND RES<>'GCF'
  <Query>
</Employees>

Вы не можете использовать <> напрямую, поскольку он выдает ошибку. В этом случае вы можете использовать &#60;&#62; взамен этого.

<Employees Id="1" Name="ABC">
  <Query>
    SELECT * FROM EMP WHERE ID=1 AND RES &#60;&#62; 'GCF'
  <Query>
</Employees>

Нажмите здесь, чтобы просмотреть все коды.

Ответ 12

Связанная проблема заключается в том, как кодировать содержимое элемента XML, когда такой контент содержит амперсанд - если XML является частью URI, представленной с действием GET. (Оставив в стороне мудрость такого API-интерфейса, с этим мне пришлось столкнуться сегодня.) Я попробовал все, что упоминалось выше, и единственное, что действительно работало, было %26amp;. %26 был необходим для URL-кодирования первый символ в XML-кодировке для амперсанда. amp;, следующий за %26, был необходим, поскольку XML-часть URI загружалась в сервер XML-документа. Поэтому в этом забавном сценарии необходимо было скреплять обе методологии кодирования вместе.