У меня есть этот код:
$reader = new DOMDocument();
$reader->loadHTML($shell);
$xpath = new DomXPath($reader);
$xpath->registerNamespace('html','http://www.w3.org/1999/xhtml');
$res = $xpath->query('descendant-or-self::*[contains(@class,"content")]');
print_r($res);
$shell — это просто переменная, содержащая следующий HTML-код:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en-us" />
<title>Hello World</title>
</head>
<body>
<div class="content">
Hello World!!
</div>
</body>
</html>
Если я прав, запрос xpath:
descendant-or-self::*[contains(@class,"content")]
предполагается получить div с классом «контент». Однако, когда я печатаю массив, все, что я вижу, это пустой объект:
DOMNodeList Object
(
)
Значит ли это, что запрос не сработал? Отличается ли язык запросов DomXPath от языка SimpleXML Xpath, потому что запрос работает с SimpleXML?
Если он работает, как просмотреть и изменить совпадающие узлы?