2009-12-16 59 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] 
}