0

我想检索 HTML 中 div 元素中的所有内容。我正在使用 PHP 和 XPath 来做到这一点。这是查询:

$doc = new DOMDocument();
$doc->loadHTMLFile($uri);
$xpath= new DOMXPath($doc);
$text_content =
$xpath->query("/html/body/div[5]/div[1]/div[1]/div[1]/div[2]/div[5]/*");

我使用通配符“*”来检索这个 div(div[5]) 下的所有元素(普通文本、div、img、p 等),但是当我打印 $text_content 时,我发现它只存储了所有div 元素。

这样做的正确方法是什么?

提前致谢。

4

1 回答 1

0

.../*只会div[5]在 xpath 查询中检索作为该文件的直接后代的节点。例如

 ... rest of document ...
     <div id="5">
        <p>hello <span>there</span></p>
     </div>

在这个简化的示例中,您的查询将检索<p>,因为它是<div>. 它不会带回<span>,因为那是 的孙子<div>

要获得所有后代,无论级别如何,您都想要

.../div[5]//*
          ^^---note doubled slashes

//是 的简写/descendant-or-self::node()/,将返回跨度。

于 2013-07-30T21:32:15.033 回答