Метод loadHTML
вызовет модуль HTML-анализатора из libxml . Afaik, итоговое дерево HTML не будет содержать пространств имен, поэтому запрос к ним с помощью XPath здесь не сработает. Вы можете сделать
$dom = new DOMDocument();
$dom->loadHtml($html);
$xpath = new DOMXPath($dom);
foreach ($dom->getElementsByTagName('div') as $node) {
echo $node->getAttribute('abc:section');
}
echo $dom->saveHTML();
В качестве альтернативы вы можете использовать //div/@*
для извлечения всех атрибутов, включая атрибуты пространства имен. Однако в запросе не должно быть двоеточия, поскольку для этого требуется регистрация префикса пространства имен, но, как указано выше, это не работает для дерева HTML.
Еще одна альтернатива - использовать //@*[starts-with(name(), "abc:section")]
.