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



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



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



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

668   12  

12 ответов:

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

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

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

я попробовал, но это не допускается.

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

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

теги CDATA?

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

&amp; должно работать просто отлично, Википедия имеет список предопределенных объектов в XML.

в моем случае я должен был изменить его на %26.

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

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

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

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

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

&amp;amp;

для более подробного объяснения кодировки XML, смотрите:

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

<xsl:text disable-output-escaping="yes">&amp;&nbsp;</xsl:text> будет делать трюк.

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

связанная проблема заключается в том, как кодировать содержимое элемента XML, когда такое содержимое содержит амперсанд-если XML является частью URI, отправленного с действием GET. (Оставляя в стороне мудрость такого API-это было то, с чем мне пришлось иметь дело сегодня.) Я пробовал все, что упоминалось выше, и единственное, что действительно работало, было %26amp; The %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>

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

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

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

Comments

    Ничего не найдено.