Ошибка XML · attribute
Незакрытая кавычка в значении атрибута
Значение атрибута открыто кавычкой, которая нигде не закрывается, поэтому парсер не находит конец тега и читает дальше, пока не упрётся в конец файла.
attributes construct error (line 1)Что это значит
Парсер начал читать значение в кавычках и дошёл до конца тега, строки или документа, так и не встретив парной кавычки. libxml2 сообщает об этом обобщённо — «attributes construct error» — обычно вместе с более точным сообщением о теге, который не удалось завершить.
Позиция указывает на место, где парсер сдался, а не на открывающую кавычку. Искать нужно выше по документу.
Обычные причины
- Пропущенная закрывающая кавычка при ручном редактировании атрибутов.
- Кавычка внутри значения, не экранированная как ".
- Смешение одинарных и двойных кавычек в одном значении.
- Конкатенация строк, где кавычка попала в значение из данных.
Как исправить
- Найдите последний тег с нечётным числом кавычек и закройте значение.
- Экранируйте кавычки внутри значений: " для двойной и ' для одинарной.
- Собирайте разметку сериализатором — он экранирует значения атрибутов по построению.
Та же ошибка в других парсерах
Разные парсеры, один и тот же дефект. Сообщения не переведены — вы искали именно их текст.
Xerces (Java)
Open quote is expected for attribute "photo" associated with an element type "image:image".libxml2 (companion message)
AttValue: " or ' expectedexpat (Python)
not well-formed (invalid token): line 1, column 24
До и после
Оба фрагмента проверяются тестами на настоящем парсере: первый выдаёт в точности сообщение выше, второй разбирается без ошибок.
<image:image title='Tom's photo'/><image:image title="Tom's photo"/>