2011-08-07 2 views
0

J'utilise SimpleXML pour lire un fichier XML contenant des nouvelles et des événements pour mon site Web. J'utilise foreach pour faire défiler mes balises xml prédéfinies. Cependant, sur mon site Web, je n'ai besoin de présenter que trois nouvelles et événements qui sont les enfants de la racine de mon xml.SimpleXML lit le nombre spécifique d'enfants seulement

<list> 
<newsevent> 
<date>AUG 7</date> 
<description>news</description> 
</newsevent> 
<newsevent> 
<date>AUG 6</date> 
<description>news/description> 
</newsevent>  
<newsevent> 
<date>AUG 5</date> 
<description>news</description> 
</newsevent> 
</list> 

J'utilise foreach de mon fichier php

foreach($xml->newsevent as $newsevent) 
{ 
echo "$newsevent->date"; 
echo "$newsevent->description"; 
} 

Le fichier XML sera traité comme base de données pour les nouvelles et les événements, et de toute évidence, il y aurait beaucoup d'enregistrement. Comment pourrais-je seulement montrer un nombre spécifique de nouveaux invités?

Répondre

0

Vous pouvez simplement ajouter une variable compteur, garder une trace du nombre de fois que vous avez mis en boucle, et sortir de la boucle quand vous avez assez de temps en boucle:

$counter = 0; 
foreach($xml->newsevent as $newsevent) 
{ 
    echo "$newsevent->date"; 
    echo "$newsevent->description"; 
    $counter++; 
    if ($counter >= 3) { 
     break; 
    } 
} 


Encore, notez que, SimpleXML(même chose avec DOMDocument, BTW), le document XML entier sera analysé et chargé en mémoire, quel que soit le nombre d'éléments dont vous avez besoin de lire.

Si votre document est très volumineux, vous pouvez éviter que cela ne se produise - ce qui signifie qu'il n'utilise pas d'analyseur DOM, mais un interpréteur SAX.

En PHP, vous voudrez jeter un oeil à la classe XMLReader.

+0

Merci beaucoup – user874737

Questions connexes