Как избежать амперсандов в XML, чтобы они отображались как объекты в HTML?
У меня есть некоторый текст XML, который я хочу отобразить на странице HTML. Этот текст содержит амперсанд, который я хочу отобразить в его представлении сущности: &
,
Как мне избежать этого амперсанда в исходном XML? Я старался &
, но это декодируется как фактический символ амперсанда (&
), что недопустимо в HTML.
Поэтому я хочу избежать этого таким образом, чтобы он был представлен как &
на веб-странице, которая использует вывод XML.
12 ответов
Когда ваш XML содержит &
, это приведет к тексту &
,
Когда вы используете это в HTML, это будет отображаться как &
,
Согласно §2.4 спецификации XML 1.0, вы должны иметь возможность использовать &
,
Я пробовал & amp; но это не разрешено
Вы уверены, что это не другая проблема? XML явно определяет это как способ избежать амперсандов.
&
символ сам по себе является escape-символом в XML, поэтому решение состоит в том, чтобы объединить его и использовать десятичный эквивалент Unicode для &
таким образом гарантируя, что нет ошибок синтаксического анализа XML. То есть заменить персонажа &
с &
,
CDATA теги?
<![CDATA[
This is some text with ampersands & other funny characters. >>
]]>
&
должно работать нормально, в Википедии есть список предопределенных объектов в XML.
В моем случае мне пришлось изменить его на %26
,
Мне нужно было убежать &
в URL. Так &
не сложилось для меня. Изменяется функция urlencode &
в %26
, Таким образом, ни XML, ни механизм URL браузера не жаловались на URL.
Я пробовал &, но это не сработало. Основываясь на ответе Вим тен Бринка, я попробовал и это сработало.
Один из моих коллег-разработчиков предложил мне использовать & # x26; и это работало независимо от того, сколько раз это может быть оказано.
&
это способ представления амперсанда в большинстве разделов XML-документа.
Если вы хотите, чтобы XML отображался в HTML, вам нужно сначала создать правильно закодированный XML (который включает в себя изменение &
в &
), а затем используйте его для создания правильно закодированного HTML (который снова включает изменение &
в &
). Это приводит к:
&amp;
Для более подробного объяснения кодировки XML см.:
<xsl:text disable-output-escaping="yes">& </xsl:text>
сделает свое дело.
Как насчет использования Юникода \u0026
? Работает для меня в моих файлах Android Android. Если возникнут проблемы, кто-нибудь, дайте мне знать.
Связанная проблема заключается в том, как кодировать содержимое элемента XML, если оно содержит амперсанд - если XML является частью URI, переданного с помощью действия GET. (Оставляя в стороне мудрость такого API - это было то, с чем мне пришлось иметь дело сегодня.) Я попробовал все, что упомянуто выше, и единственное, что на самом деле работало, было %26amp;
%26
было необходимо для URL-кодирования первого символа в XML-кодировке для амперсанда. amp;
следуя %26
был необходим, потому что XML-часть URI загружалась в серверную часть XML-документа. Таким образом, в этом забавном сценарии было необходимо объединить обе методологии кодирования вместе.
Подумайте, выглядит ли ваш 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>
Нажмите здесь, чтобы увидеть все коды.