Php xPath可以';找不到指定的元素
为了说明我的问题,我将其简化为以下内容:Php xPath可以';找不到指定的元素,php,xpath,Php,Xpath,为了说明我的问题,我将其简化为以下内容: <?php $html = " <!doctype html> <html> <head> <title>Test Title</title> </head> <body> <p>
<?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);
?>
这是一个如此简单的示例,我要么严重误解了某些内容,要么我需要某种预配置(但我在示例中没有看到这是必要的)。正如@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"
正如@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"
为什么不直接使用
explode()
?确保dom解析正确,例如,仅尝试搜索//html
,查看是否拾取该节点,或者执行类似于echo$dom->saveHTML()的操作
然后再看出来什么。@MarcB/html
也没有正确解析。@OliverQueen这是一个过于简化的示例。然后执行$dom->saveHTML(),看看会弹出什么。为什么不直接使用explode()
?确保dom解析正确,例如,尝试只搜索/html
,然后查看是否拾取了该节点,或者执行类似于echo$dom->saveHTML()
的操作,然后查看结果。@MarcB//html
也没有正确解析。@OliverQueen这是一个过于简化的示例。然后执行$dom->saveHTML(),看看会弹出什么。谢谢。我的印象是Dom文档构造函数是loadHTML
的快捷方式。我休息的时候会试试的,谢谢。你说得对。通过loadHTML
而不是构造函数来加载html。请参考,不,它没有:public DOMDocument::u构造([string$version[,string$encoding]])
,谢谢。我的印象是Dom文档构造函数是loadHTML
的快捷方式。我休息的时候会试试的,谢谢。你说得对。通过loadHTML
而不是构造函数来加载html。为了便于参考,没有:public DOMDocument::u构造([string$version[,string$encoding]])
,