我可以对已经使用xpath获得的结果使用xpath查询吗?
答案 0 :(得分:1)
在大多数托管语言/环境(如XSLT,XQuery,DOM)中,您可以。不了解PHP,但如果它不允许这样会很奇怪。
当然,第一个查询的结果必须是一个节点集,以便将来“/”运算符可以/允许/成功。
答案 1 :(得分:1)
我在PHP / SimpleXML中完成了它。我最初不理解的是你还在处理完整的SimpleXML对象,所以如果你以“/ nodename”开头,你就是在root上运行。如果以“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);
}
答案 2 :(得分:0)
例如,在PHP中,您可以使用上下文(即给定节点)运行查询。因此,如果您在第一个查询中获得了DOMNodeList,则可以执行以下操作:
$query1 = '//p';
$query2 = './a'; // do not forget the dot
$node = $xpath->query($query1)->item(0);
$result = $xpath->query($query2, $node);
当然这是一个愚蠢的例子,因为它可以只使用正确的XPath experssion一次性完成,但我相信它说明了你的问题。