xPath 找不到指示的元素


xPath can't find the indicated element

为了说明我的问题,我将其简化为以下内容:

<?php
    $html = "
        <!doctype html>
        <html>
            <head>
                <title>Test Title</title>
            </head>
            <body>
                <p>Test Body</p>
            </body>
        </html>
    ";
    $dom = new DOMDocument($html);
    $xPath = new DOMXPath($dom);
    $result = $xPath->query("//html/head/title");
    var_dump($result);
    $title = $result->item(0);
    var_dump($title);
?>

我正在尝试提取标题文本。运行这个,返回的节点列表长度为 0,所以显然第二次检查也失败了:

C:'xampp'htdocs'mySite'partials'testPage.php:17:
object(DOMNodeList)[3]
  public 'length' => int 0
C:'xampp'htdocs'mySite'partials'testPage.php:20:null

这是一个如此简单的例子,我要么严重误解了某些东西,要么我需要某种预配置(但我还没有看到在示例中是必要的)。

正如@TechNyquist所指出的,你不会以这种方式构建 DOMDocument。

尝试:

$dom = new DOMDocument();
$dom->loadHTML($html);

我试过,

$dom = new DOMDocument();
$dom->loadHTML($html);
$xPath = new DOMXPath($dom);
$result = $xPath->query("//html/head/title");
// var_dump($result);
$title = $result->item(0);
var_dump($title->textContent);

并如预期的那样得到

string(10) "Test Title"