2009-12-16 8 views
0

Je pense que cela pourrait être plus précisément appelé "pagination" ... pas sûr. Je reçois un morceau de XML (disons 100 nœuds). Je veux ensuite en afficher seulement un nombre à la fois sur une page. Comment est-ce que tu fais ça?PHP - Éliminer les résultats d'un ensemble de résultats XML

Pour référence, dans .NET, il serait quelque chose comme ceci:

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

et qui attrapait un sous-ensemble de XML à partir d'un document XML, exécutez au travers de supprimer tous les nœuds plus ou moins que mon beginIndex et mon finishIndex (donc je saisirais, dis les 20 premiers résultats en mettant beginIndex = 0 et finishIndex = 19 et le passage suivant je pourrais saisir des noeuds 20-29 et ainsi de suite).

En un mot, en PHP, comment supprimer vous les noeuds indésirables comme ce bit qui dit node.DeleteSelf? Tout ce que je peux faire ... je ne suis pas sûr de ce bit de suppression.

+0

Qu'est-ce que vous utilisez en PHP pour itérer ou gérer le XML? – Johrn

+0

xpath. J'obtiens les résultats avec simplexml et puis je prends l'ensemble que je veux avec xpath comme: $ result = $ xml-> xpath ('/ employees/mechanics'); – Lothar

Répondre

1

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

montre que SimpleXMLElement :: XPath retourne un tableau d'objets SimpleXMLElement, de sorte que vous pouvez faire quelque chose comme:

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