我可以对已经通过xpath获得的结果使用xpath查询吗?
发布于 2010-04-10 02:07:43
在大多数托管语言/环境(如XSLT、XQuery、DOM)中,您可以使用。我不知道PHP,但如果它不允许这样做,那就太奇怪了。
当然,第一个查询的结果必须是一个节点集,以便将来的"/“运算符在它上可能/允许/成功。
发布于 2012-02-11 12:35:40
我已经在PHP/SimpleXML中这样做了。一开始我不理解的是,您仍然在处理完整的SimpleXML对象,所以如果您从"/nodename“开始,您就是在根上操作。如果以"nodename“开头,则从结果节点的开头开始。下面是我的例子:
$parsed=simplexml_load_string($XML);
$s = '/ItemSearchResponse/Items/Item';
$items = $parsed->xpath($s);
foreach($items as $item)
{
$s = 'ItemAttributes/Feature';
$features[]=$item->xpath($s);
$s = 'ASIN';
$asins[]=$item->xpath($s);
$s = 'ImageSets/ImageSet[@Category="primary"]';
$primary_img_set=$item->xpath($s);
$s = 'MediumImage/URL';
$medium_image_url[] = $primary_img_set[0]->xpath($s);
}发布于 2014-11-28 02:26:17
例如,在PHP中,您可以运行具有上下文的查询,即给定的节点。因此,如果您在第一个查询中得到了一个DOMNodeList,那么您可以这样做:
$query1 = '//p';
$query2 = './a'; // do not forget the dot
$node = $xpath->query($query1)->item(0);
$result = $xpath->query($query2, $node);当然,这是一个愚蠢的例子,因为它可以用正确的XPath表达式在一次操作中完成,但我相信它说明了您的问题。
https://stackoverflow.com/questions/2608072
复制相似问题