DOMDocument ДОМДокумент:Игнорировать повторяющиеся идентификаторы элементов
-
03-07-2019 - |
Вопрос
Я помещаю некоторое содержимое страницы (которое было запущено через Tidy, но в этом нет необходимости, если это источник проблем) в DOMDocument
используя DOMDocument::loadHTML
.
Он выдает различные ошибки:
Идентификатор x, уже определенный в сущности, строка X
Есть ли какой-нибудь способ сделать либо DOMDocument
(или привести в порядок) игнорировать или удалять повторяющиеся идентификаторы элементов, так что это фактически создаст DOMDocument
?
Спасибо.:)
Решение
Быстрый поиск по теме показывает это (неверное) сообщение об ошибке:
http://bugs.php.net/bug.php?id=46136
В последнем ответе говорится следующее:
Вы используете правила HTML 4 для загрузки Документа XHTML.Либо используйте load() метод для синтаксического анализа в формате XML, либо функцию libxml_use_internal_errors() чтобы игнорировать предупреждения.
Я не могу быть уверен, сталкиваетесь ли вы с этой проблемой по тем же причинам, поскольку вы не включили ссылку на загружаемую HTML-страницу.В любом случае, используя libxml_use_internal_errors()
должен, по крайней мере подавлять ошибка.
Идентификаторами в HTML-документах являются в целом уникальный, так что лучшее решение будет по-прежнему проверять ваш документ, если это вообще возможно.
Другие советы
По определению, идентификаторы уникальны.Если это не так, вам следует использовать вместо этого классы (или имена, где это применимо).
Я сомневаюсь, что вы можете заставить XML-инструменты игнорировать дублирующиеся идентификаторы, что заставит их обрабатывать недопустимый XML-документ.
Используйте исключения для обработки повторяющихся идентификаторов и переименуйте второй идентификатор.Или, может быть, объединить элементы в подэлементах одного и того же родителя с идентификатором.
Идентификаторы уникальны в XML-файле (в корневом элементе XMLTree).