Как избежать амперсандов в 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>
Нажмите здесь чтобы увидеть все коды.