【发布时间】:2011-07-18 08:55:23
【问题描述】:
我正在用 php 中的 DOMDocument 解析 html。
我发现我无法使用 xpath 查询全选。但是 getElementsByTagName() 方法可以正常工作。
代码如下:
$xml = new DOMDocument();
$xml->load("file.html");
$xpath = new DOMXPath($xml);
$links = $xpath->query("//a");
$links2 = $xml->getElementsByTagName("a");
foreach($links as $link){
echo "<br>$k: ".$link->nodeValue; // this doesn't print the node value. $links is empty
}
foreach($links2 as $link){
echo "<br>$k: ".$link->nodeValue; // this prints OK the node value
}
我原以为 xpath->query("//a") 会与 getElementsByTagname("a") 相同,但显然不是。
谁能告诉我为什么他们不一样。或者如果是,我在使用 xpath 查询选择节点时做错了什么?
谢谢
【问题讨论】:
-
感谢您尝试复制。它给了我需要它的提示。我的问题是加载文件时。我需要使用
$xml->loadHTMLfile('file.html')而不是load()方法加载。 -
戈登,由于某种原因,我没有看到将您的评论标记为答案的链接
-
将我的 cmets 移至答案
标签: php xpath domdocument