Ошибка XML · entity
Сущность не определена
В XML использована HTML-сущность. Предопределённых всего пять; всё остальное нужно объявлять в DTD или писать числовой ссылкой.
Entity 'nbsp' not defined (line 1)Что это значит
XML предопределяет ровно пять сущностей: & < > " и '. HTML определяет сотни других — , ©, —, é — и ни одна из них не существует в XML, пока документ не объявит её сам в DTD.
Это ещё один случай, который пропускают нестрогие парсеры: fast-xml-parser принимает неопределённую сущность без возражений, поэтому может пройти один инструмент и сломать следующий.
Обычные причины
- HTML-сущности в содержимом XML: , ©, —, ….
- Текст, скопированный из HTML-страницы или визуального редактора в ленту.
- CMS, которая экранирует для вывода в HTML и применяет то же экранирование к XML.
- Общий шаблон для HTML- и XML-представления.
Как исправить
- Используйте числовую ссылку:   вместо , © вместо ©.
- Ещё лучше — пишите сам символ: документ в UTF-8, поэтому © и — допустимы буквально.
- Оборачивайте фрагменты HTML в CDATA, чтобы их сущности не разбирались как XML.
- Если именованные сущности действительно нужны, объявите их во внутреннем подмножестве DTD.
Та же ошибка в других парсерах
Разные парсеры, один и тот же дефект. Сообщения не переведены — вы искали именно их текст.
Xerces (Java)
The entity "nbsp" was referenced, but not declared.expat (Python)
undefined entity : line 1, column 12.NET System.Xml
Reference to undeclared entity 'nbsp'.fast-xml-parser and similar
(accepted — no error reported at all)
До и после
Оба фрагмента проверяются тестами на настоящем парсере: первый выдаёт в точности сообщение выше, второй разбирается без ошибок.
<title>Acme Ltd</title><title>Acme Ltd</title>