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