2010-02-06 3 views
2

J'utilise php xpath pour obtenir les valeurs du flux xml ci-dessous et php la fonction.ignorer certains objets dans xml feed en utilisant php

<FOUND> 
    <IMAGES> 
    <IMAGE> 
     <SMALL>images/small.jpg</SMALL> 
     <MED>images/med.jpg</MED> 
     <LARGE>images/large.jpg</LARGE> 
     <EXTRAL>images/extra.jpg</EXTRAL> 
    </IMAGE> 
    <IMAGE> 
     <SMALL>images1/small.jpg</SMALL> 
     <MED>images1/med.jpg </MED> 
     <LARGE>images1/large.jpg</LARGE> 
     <EXTRAL>images1/extra.jpg</EXTRAL> 
    </IMAGE> 
    <IMAGE> 
     <SMALL>images2/small.jpg</SMALL> 
     <MED>images2/med.jpg </MED> 
     <LARGE>images2/large.jpg</LARGE> 
     <EXTRAL>images2/extra.jpg</EXTRAL> 
    </IMAGES> 
</FOUND> 

function img ($id){ 

    $xml=simplexml_load_file("feed1.xml"); 
    //$xml=simplexml_load_string($string); 
    if (!$xml) { 
    trigger_error("There was an error",E_USER_ERROR); 
    } 

    $images=$xml->xpath('//IMAGE'); 
    return $images; 

    } 

ci-dessus est seulement un code partiel cz l'alimentation est assez énorme .. Je voudrais savoir est qu'il ya moyen de saisir que le premier et le troisième bloc d'objets d'image, sauter le 2ème bloc et afficher le reste blocs d'image?

J'ai un énorme flux xml séparé qui est assez similaire au flux ci-dessus, c'est comme 80 blocs d'objets image. Donc je voudrais afficher un message après chaque 10 blocs. comment je fais ça?

toute aide sera très appréciée

Répondre

3

Pour obtenir le premier et le troisième bloc, vous pouvez faire:

//IMAGE[position() == 1 || position() == 3] 

Pour obtenir par exemple tous les éléments 10 que vous pouvez faire:

//IMAGE[position() mod 10 == 0] 

Voir: XPath function reference.

Je suis dire pas tout à fait sûr de ce que vous exactement avec écran un message après chaque 10 bloc mais vous pouvez le faire:

$images = $xml->xpath('//IMAGE'); 

foreach($images as $key => $image) { 
    // do whatever you want to do with the image 
    if($key % 10 == 9) { 
     echo 'Some message'; 
    } 
} 
+0

Vous devriez changer if à: if ($ key% 10 == 0 && $ key> 0) –

+0

@Mike: Merci de m'avoir signalé. –

+0

en fait, si c'est après le 10 (et pas avant le 11, ce qui est important), vous voulez: if ($ key% 10 == 9) –

0

Pour plus d'informations sur la syntaxe XPath, vous pouvez visiter http://www.w3schools.com/xpath/xpath_syntax.asp. ... Etant donné que xpath() renvoie un tableau, vous pouvez peut-être faire une opration plus complexe dans une boucle foreach().

Questions connexes