DOMDocument: игнорировать повторяющиеся идентификаторы элементов - PullRequest
7 голосов
/ 06 января 2009

Я помещаю некоторый контент страницы (который был запущен через Tidy, но не обязательно, если это является источником проблем) в DOMDocument с использованием DOMDocument::loadHTML.

Это приводит к различным ошибкам:

ID x уже определен в Entity, строка X

Есть ли способ заставить DOMDocument (или Tidy) игнорировать или убрать дубликаты идентификаторов элементов, чтобы он действительно создал DOMDocument?

Спасибо. :)

Ответы [ 3 ]

11 голосов
/ 06 января 2009

Быстрый поиск по теме выявляет этот (неправильный) отчет об ошибке:

http://bugs.php.net/bug.php?id=46136

В последнем ответе говорится следующее:

Вы используете правила HTML 4 для загрузки XHTML документ. Либо использовать load () метод для анализа как XML или Функция libxml_use_internal_errors () игнорировать предупреждения.

Я не могу быть уверен, что вы столкнулись с этой проблемой по тем же причинам, поскольку вы не включили ссылку на загружаемую страницу HTML. В любом случае использование libxml_use_internal_errors() должно как минимум подавить ошибку.

Идентификаторы в HTML-документах обычно уникальны , поэтому лучшее решение все равно будет проверять ваш документ, если это вообще возможно.

0 голосов
/ 06 января 2009

Используйте исключения для обработки дубликатов идентификаторов и переименуйте второй идентификатор. Или, может быть, объединить элементы в подэлементах того же родителя с идентификатором.

Идентификаторы уникальны в файле XML (в корневом элементе XMLTree)

0 голосов
/ 06 января 2009

По определению идентификаторы уникальны. Если это не так, вы должны использовать классы (или имена, где это применимо).
Я сомневаюсь, что вы можете заставить инструменты XML игнорировать дубликаты идентификаторов, что заставит их обрабатывать недопустимый документ XML.

...