PHP - XML ​​sonuç kümesinden sonuçlarını ortadan kaldırmak

2 Cevap php

Bu daha doğru bir "çağrı" olarak adlandırılan ... emin olabileceğini düşünüyorum. Ben o zaman bir sayfada bir anda bunlardan sadece bir set sayısını görüntülemek istiyorsanız (100 düğümleri diyelim) XML bir yığın alıyorum. Bunu nasıl yaparsınız?

. Başvuru için, NET'te böyle bir şey olurdu:

    // 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);
    }

ve {, bir XML belgesinden XML bir alt kapmak yüzden kapmak isteyen tüm düğümlerin büyük ya da benim beginIndex ve benim finishIndex (daha az silerek ona koşuyoruz, ayarlayarak ilk 20 sonuçlarını söylemek beginIndex = 0 ve olacaktır [(1)]} ve ben düğümleri 20-29 ve benzeri) kapmak suretiyle bir sonraki pas.

Özetle, PHP, nasıl söylüyor bit gibi istenmeyen düğümleri silerim node.DeleteSelf? Her şey ben ... bu biraz silmek hakkında emin değilim yapabilirsiniz.

2 Cevap

PHP's SimpleXMLElement documentation: http://php.net/manual/en/simplexmlelement.xpath.php

SimpleXMLElement :: xpath SimpleXMLElement nesneleri dizisini döndürür, böylece gibi bir şey yapabileceğini gösterir:

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

Eğer bir PHP yineleyici sınıfını kullanabilirsiniz: http://php.net/manual/en/class.iterator.php