我正在使用以下代码
$doc = new DOMDocument();
$doc->strictErrorChecking = false;
@$doc->loadHTML($data);
$xpath = new DOMXPath($doc);
//Select the parent node
$categories =$xpath->query('//span[@class="refinementLink"]/ancestor::a/li/ul');
$abcd=array();
var_dump($categories);
foreach ($categories as $category) {
$abcd[]=$category->nodeValue;
print_r('<br/>'.$abcd);
// Crafts, Hobbies & Home (19)
}` //var_dump($abcd);
现在,这段代码做了什么?它选择一个span标签,span标签的dom列表是
UL - 李(4) - A(2) - 跨度(3)
输出
对象(的DOMNodeList)[3]
看起来我正在做的事情好吧,我的html文档中有3个span标签, 我需要的是,我如何获得这些span标签的文本?我需要span标签之间的文本 有什么帮助吗?
答案 0 :(得分:1)
foreach ($categories as $category) {
$abcd[]=$category->textContent;
}
var_dump($abcd);
答案 1 :(得分:0)
我认为你可以在开始执行XPath查询时拉开@attribute。 XPath中的谓词为您处理foreach。
我使用Oxygen IDE中的XML开发人员,它可以很好地显示XPath从XML中解析出来的内容,这样您就可以更加确定会发生什么。
//跨度/ @文本[../@类= “refinementLink”] /祖先:: A / LI / UL 我不确定文本是否是您的目标文本的属性,但在XPath中,无论在[]之前是什么,都是关于您想要选择的内容。您选择它作为节点,因此您必须在那里做额外的工作。如果你取出一系列字符串,你可能会得到别的东西。我自己从未尝试过,只是提供另一种思路。