2010-11-24 102 views
13

上下文节点有这样的代码:PHP - xpath中问题

$products = $feed->_xpath->query("//cf:vehicle" ); 

foreach($products as $product) 
{ 
    echo $product->nodeName . ': ' . $product->getAttribute('code') . '<br />'; 
    $imgs = $feed->_xpath->query("//cf:image" , $product); 
    echo '&nbsp;Imgs: ' . $imgs->length . '<br />'; 
} 

在xmlfeed找到的产品的节点的数目是103 - 这是正确的。

查询在该节点内定位图像但是在当前节点上下文中没有这样做 - 它找到116个图像节点,这是图像节点在图像节点中的总数,因为它应该只选择当前图像中的图像产品(在大多数情况下,0到3之间)

任何指针非常感谢。

回答

34

您必须使用.//cf:image才能使其相对于上下文节点。

http://www.w3.org/TR/xpath/#path-abbrev

// para选择文档根的所有的para子孙,因此选择在同一文档中所有para元素作为上下文节点

。//para选择上下文节点的para元素后代

另请参阅http://bugs.php.net/bug.php?id=34413

+1

欢呼戈登 - 又一次大规模的疏忽加入我的投资组合! – 2010-11-24 11:24:20