【发布时间】:2014-05-26 07:41:12
【问题描述】:
如何在不再次查询整个文档的情况下查询子元素的 xpath 结果?
我查询我的文档以找到最后一个带有 menu-item 类的 <li>:
$doc = new DomDocument();
@$doc->loadHTML( $html );
// $html is invalid (and should be at this point),
// so use @ sign to suppress errors
$xpath = new DomXPath( $doc );
$li = $xpath->query( "(//li[contains(concat(' ', normalize-space(@class), ' '), 'menu-item')])[last()]" )->item( 0 );
上面的工作正常,现在我想查询$li找到以下内容:
$p = $xpath->query( "//p[contains(concat(' ', normalize-space(@class), ' '), 'field-description')]" )->item( 0 );
带有field-description 类的p 标记。这不起作用并返回找到的第一个实例,如果我对其进行修改并使用[last()](无论这是什么),那么它可以工作,但它不一定是这里的最佳解决方案:
$p = $xpath->query( "(//p[contains(concat(' ', normalize-space(@class), ' '), 'field-description')])[last()]" )->item( 0 );
以上行有效,但我想再次查询 $li 内部而不是整个文档。
【问题讨论】:
标签: php xpath domdocument xpathquery