2009-12-16 30 views
0

我认为这可能更准确地称为“分页”...不确定。我得到一大块XML(可以说有100个节点),然后我想在页面上一次只显示一组数字。你怎么做到这一点?PHP - 从XML结果集中消除结果

作为参考,在.NET中它会是这样的:

// Get some results. These are an XPathExpression 
    XPathNodeIterator iterate = nav.Select(results); 
    int index = 0; 
    // Iterate over them deleting excess results 
    foreach (XPathNavigator node in iterate) { 
     if ((index < beginIndex) || (index > finishIndex)) { 
      node.DeleteSelf(); 
     } 
     index++; 
    } 
    // Set iterate to be this new set of results 
    iterate = nav.Select(results); 
    // Write out my new result set 
    foreach (XPathNavigator node in iterate) { 
     Response.Write(node.OuterXml); 
    } 

而且会抓住从XML文档XML的一个子集,通过它删除所有节点比我的beginIndex更大或更小运行,我的finishIndex(所以我会抓住,说设置beginIndex = 0finishIndex = 19前20个结果,然后通过我可以抓住节点20-29等)。

简而言之,在PHP中,如何删除像node.DeleteSelf那样的不需要的节点?我可以做的其他事情......只是不确定那个删除位。

+0

你在PHP中使用什么来遍历或以其他方式处理XML? – Johrn 2009-12-16 20:46:56

+0

xpath。我用simplexml得到结果,然后用xpath获取我想要的集合,例如:$ result = $ xml-> xpath('/ employees/mechanics'); – Lothar 2009-12-16 20:55:53

回答

1

PHP的的SimpleXMLElement文档: http://php.net/manual/en/simplexmlelement.xpath.php

可见的SimpleXMLElement :: XPath返回的SimpleXMLElement对象的数组,所以你可以这样做:

$result = $xml->xpath('string'); 
for ($i = $startIndex; $i < $startIndex + $pageSize; $i++){ 
    // also make sure that $result[$i] exists 
    // Then handle printing $result[$i] 
}