Это похоже на проблему с пространством имен.Ваш пример HTML-источника начинается с
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.apple.com/itms/" lang="de">
xmlns
означает, что документ имеет пространство имен по умолчанию, поэтому все ваши запросы XPath должны ссылаться на это пространство имен, чтобы найти какие-либо элементы.(Как ни странно, они утверждают в doctype, что это документ XHTML, но им не удалось установить его в пространстве имен XHTML.)
Вам необходимо зарегистрировать пространство имен по умолчанию, используемое <html>
.Поскольку <html>
находится в пространстве имен по умолчанию, у него нет префикса, но для того, чтобы ваш XPath работал, вам необходимо также связать это пространство имен с некоторым префиксом, а затем использовать этот префикс в выражении XPath.
$your_xml_doc->registerXPathNamespace("ns", "http://www.apple.com/itms/");
$path2 = "//ns:div[@class='product-review'][1]/ns:p[@class='truncate']";
Выражения XPath (1.0) без префикса пространства имен всегда соответствуют только целям в пространстве без имен.