DOMDocument ДОМДокумент:Игнорировать повторяющиеся идентификаторы элементов

StackOverflow https://stackoverflow.com/questions/415927

  •  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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top