Веб и кодирование
Экранирование символов в XML: спецсимволы, сущности и примеры
XML резервирует символы, которые ограничивают разметку или ссылки на сущности. Экранируйте их только там, где этого требует синтаксис, используя предопределённые сущности или числовые ссылки на символы.
Опубликовано
Пять предопределённых сущностей XML
| Символ | Сущность | Типичная причина |
|---|---|---|
| & | & | Начинает ссылку на сущность или символ |
| < | < | Начинает разметку |
| > | > | Предотвращает запрещённую последовательность ]]> в символьных данных |
| " | " | Экранирует ограничитель атрибута в двойных кавычках |
| ' | ' | Экранирует ограничитель атрибута в одинарных кавычках |
Экранирование специальных символов в тексте элемента
Неэкранированные амперсанды и левые угловые скобки недопустимы в обычных символьных данных. Знак больше обычно разрешён, но его нужно экранировать, если он завершает последовательность ]]>
<message>Use A & B when x < 10.</message>Экранирование ограничителя в значении атрибута
Двойную кавычку нужно экранировать внутри значения в двойных кавычках, а апостроф — внутри значения в одинарных кавычках. Другой вид кавычки можно использовать буквально.
<item label="A & B said "ready""/>
<item label='It's ready'/>Числовые ссылки на символы
Обе ссылки обозначают знак евро. Числовые ссылки полезны, когда символ трудно ввести или его нужно представить явно, но указанная кодовая точка всё равно должна быть допустима в XML.
Decimal: €
Hexadecimal: €Частые ошибки экранирования
- Неэкранированный & в тексте вроде research & development.
- Повторное экранирование сущности с результатом &amp;.
- Использование именованных сущностей только из HTML, которые не объявлены в XML.
- Игнорирование того, что вид кавычки-ограничителя определяет, какую кавычку нужно экранировать.
Проверьте пример
Декодируйте XML-сущности при конвертации
Парсер разрешает предопределённые сущности до создания JSON.
<message label="A & B">x < 10 & ready</message>Ожидаемый результат: Значения JSON содержат A & B и x < 10 & ready без синтаксиса сущностей.
Проверьте экранированный XML
Преобразуйте XML-документ с сущностями
Вставьте экранированный XML и убедитесь, что парсер читает нужные символы перед отображением в JSON.