Как избежать амперсандов в XML, чтобы они отображались как объекты в HTML? - PullRequest
481 голосов
/ 25 августа 2009

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

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

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

Ответы [ 12 ]

391 голосов
/ 25 августа 2009

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

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

188 голосов
/ 25 августа 2009

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

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

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

121 голосов
/ 09 февраля 2011

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

63 голосов
/ 25 августа 2009

CDATA теги?

     <![CDATA[
       This is some text with ampersands & other funny characters. >>
     ]]>
41 голосов
/ 25 августа 2009

&amp; должно работать нормально, в Википедии есть Список предопределенных сущностей в XML .

10 голосов
/ 25 октября 2013

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

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

5 голосов
/ 20 июня 2013

Я пробовал & amp, но это не сработало. Основываясь на ответе Вим тен Бринка, я попытался - и это сработало.

Один из моих коллег-разработчиков предложил мне использовать & # x26; # x26; и это работало независимо от того, сколько раз это может быть оказано.

4 голосов
/ 30 августа 2016

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

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

&amp;amp;

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

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

3 голосов
/ 04 марта 2013

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

2 голосов
/ 01 марта 2011

<xsl:text disable-output-escaping="yes">&amp;&nbsp;</xsl:text> добьется цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...