Кодирование
XML Entities Encode/Decode
Кодирование и декодирование XML-сущностей — 5 стандартных (амперсанд, угловые скобки, апостроф, кавычки) и числовые ссылки на символы.
XML, в отличие от HTML, строго требует экранирования пяти спецсимволов (&, <, >, ', "), иначе документ считается невалидным. Инструмент кодирует и декодирует эти сущности, а также числовые ссылки на символы.
Как пользоваться
- Кодирование: вставьте текст — пять зарезервированных символов заменяются на соответствующие сущности (&, <, >, ', ").
- Декодирование: вставьте XML с сущностями, чтобы получить обычный текст.
- Поддерживаются также числовые ссылки на символы (& или &) для символов вне стандартных пяти.
Типичные сценарии
- Подготовка текста пользователя для вставки в XML-документ (RSS-ленту, SOAP-запрос, конфигурационный файл).
- Диагностика, почему XML-парсер отклоняет документ — часто причина именно в неэкранированном амперсанде или угловой скобке внутри текста.
- Декодирование содержимого, полученного из XML-based API, для чтения в исходном виде.
Что стоит помнить
XML-парсеры значительно строже HTML: одна неэкранированная сущность делает весь документ невалидным, а не только искажает один элемент.
CDATA-секции (<![CDATA[...]]>) — альтернатива экранированию для больших блоков текста, позволяющая вставить произвольное содержимое без замены каждого спецсимвола по отдельности.
Статья об этом инструменте: XML Entities: экранирование символов в XML-документах
Часто задаваемые вопросы
Чем XML-сущности отличаются от HTML-сущностей?
Стандарт XML предопределяет всего 5 именованных сущностей: <, >, &, ' и ", тогда как в HTML их значительно больше (например, или ©). Для любых других символов в XML нужно использовать числовые ссылки вида & или &.
Зачем вообще экранировать текст в XML?
Символы <, > и & имеют особое значение в разметке и без экранирования могут сломать структуру документа или сделать его невалидным. Кодирование в сущности гарантирует, что текст останется корректным содержимым, а не будет воспринят как теги или атрибуты.
Что означает режим «Все символы»?
Режим «Основные» кодирует только пять предопределённых XML-сущностей, а «Все символы» дополнительно переводит в числовые ссылки не-ASCII символы — это полезно, если документ должен оставаться строго ASCII-совместимым.
Что такое CDATA и когда использовать её вместо сущностей?
Секция <![CDATA[...]]> позволяет вставить блок текста без экранирования < и & — удобно для больших фрагментов кода или HTML внутри XML. Исключение — последовательность ]]>, которая закрывает CDATA и не может встречаться в самом содержимом.
Одинаково ли XML-парсеры обрабатывают невалидные сущности?
Нет, и в отличие от браузеров, которые «прощают» ошибки в HTML, XML-парсеры строгие: один неэкранированный амперсанд или угловая скобка делает весь документ невалидным, и обработка прекращается с ошибкой.