Как избежать амперсандов в XML, чтобы они отображались как сущности в HTML?
у меня есть текст XML, который я хочу отобразить на HTML-странице. Этот текст содержит амперсанд, который я хочу отобразить в его представлении сущности:&.
Как избежать этого амперсанда в исходном XML? Я пытался!--0-->, но это декодируется как фактический символ амперсанда (&), которая составляет неверно в HTML.
поэтому я хочу избежать его таким образом, чтобы он был представлен как & на веб-странице, использующей вывод XML.
12 ответов
когда ваш XML содержит & этот текст &.
когда вы используете это в HTML, это будет отображаться как &.
по состоянию на §2.4 спецификации XML 1.0, вы должны иметь возможность использовать &.
я попробовал, но это не допускается.
вы уверены, что это не другой вопрос? XML явно определяет это как способ избежать амперсандов.
на & символ сам по себе является escape-символом в XML, поэтому решение состоит в том, чтобы объединить его и десятичный эквивалент Юникода для & таким образом, гарантируя, что нет ошибок синтаксического анализа XML. То есть заменить символ & с &.
& должно работать просто отлично, Википедия имеет список предопределенных сущностей в XML.
в моем случае мне пришлось изменить его на %26.
мне нужно было бежать & в URL-адресе. Так что & у меня не получилось.
The urlencode изменения функции & to %26. Таким образом, ни XML, ни механизм URL браузера не жаловались на URL.
Я пробовал &, но это не сработало. Основываясь на ответе Wim ten Brink, я попробовал &, и это сработало.
один из моих коллег-разработчиков предложил мне использовать & , и это сработало независимо от того, сколько раз он может быть отображен.
& - это способ представления амперсанда в большинстве разделов XML-документа.
если вы хотите, чтобы XML отображался в HTML, вам нужно сначала создать правильно закодированный XML (который включает в себя изменение & to &) и затем используйте это для создания правильно закодированного HTML (который включает в себя снова изменение & to &). Это приводит к:
&
для более подробного объяснения кодировки XML, см.:
Как насчет использования unicode \u0026? Работает для меня в моих XML-файлах android. Если возникнут проблемы, дайте мне знать.
связанная проблема заключается в том, как кодировать содержимое элемента XML, когда такое содержимое содержит амперсанд -- если XML является частью URI, отправленного с действием GET. (Оставляя в стороне мудрость такого API-это было то, с чем мне пришлось иметь дело сегодня.) Я пробовал все, что упоминалось выше, и единственное, что действительно сработало, было %26amp; на %26 был необходим для URL-кодирования первого символа в XML-кодировке для амперсанда. The 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>
Нажмите здесь чтобы увидеть все коды.