Это звучит довольно простой вопрос, но я не смог заставить его работать. Я запускаю PHP 5.2.6.Как узнать пространство имен элемента в PHP DOM?
У меня есть DOM элемент (корневой элемент), который, когда я иду в $ element-> saveXML(), он выводит атрибут Xmlns:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
...
Однако, я не могу найти способ программно внутри PHP, чтобы увидеть это пространство имен. Я хочу, чтобы проверить, существует ли он и что он установлен.
Проверка $document->documentElement->namespaceURI
будет очевидным ответом, но это пусто (я никогда не мог получить это, чтобы быть непустым). Что генерирует значение xmlns в выходе и как я могу его прочитать?
Единственный практический способ, которым я смог сделать это до сих пор, - это полный взлом - путем сохранения его как XML в строку с помощью saveXML(), а затем чтение с помощью регулярных выражений.
Edit:
Это может быть особенностью загрузки XML при помощи loadHTML(), а не loadXML(), а затем напечатать его с помощью saveXML(). Когда вы это делаете, кажется, что по какой-то причине saveXML добавляет атрибут xmlns, хотя нет способа обнаружить, что это значение xmlns является частью документа с использованием методов DOM. Я думаю, это означает, что если бы у меня был способ определить, был ли загруженный документ загружен с использованием loadHTML(), я мог бы решить это по-другому.
очень красивый и подробный, не знал о nodeTypes в зависимости от метода синтаксического анализа, но имеет смысл – edorian
Спасибо за подсказку о nodetypes и возможность использовать xpath - решает много моих проблем! – thomasrutter