首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php xpath查询和xpath结果

php xpath查询和xpath结果
EN

Stack Overflow用户
提问于 2010-04-09 22:01:43
回答 3查看 532关注 0票数 2

我可以对已经通过xpath获得的结果使用xpath查询吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-10 02:07:43

在大多数托管语言/环境(如XSLT、XQuery、DOM)中,您可以使用。我不知道PHP,但如果它不允许这样做,那就太奇怪了。

当然,第一个查询的结果必须是一个节点集,以便将来的"/“运算符在它上可能/允许/成功。

票数 1
EN

Stack Overflow用户

发布于 2012-02-11 12:35:40

我已经在PHP/SimpleXML中这样做了。一开始我不理解的是,您仍然在处理完整的SimpleXML对象,所以如果您从"/nodename“开始,您就是在根上操作。如果以"nodename“开头,则从结果节点的开头开始。下面是我的例子:

代码语言:javascript
复制
$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);
  }
票数 1
EN

Stack Overflow用户

发布于 2014-11-28 02:26:17

例如,在PHP中,您可以运行具有上下文的查询,即给定的节点。因此,如果您在第一个查询中得到了一个DOMNodeList,那么您可以这样做:

代码语言:javascript
复制
$query1 = '//p';
$query2 = './a'; // do not forget the dot
$node = $xpath->query($query1)->item(0);
$result = $xpath->query($query2, $node);

当然,这是一个愚蠢的例子,因为它可以用正确的XPath表达式在一次操作中完成,但我相信它说明了您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2608072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档