parser flux xml

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : parser flux xml

par bobgalere » 01 avr. 2009, 12:30

petite précision.

Le but de l'opération est d'éviter à avoir à indiquer un chemin pour récupérer les données.

$result = $xml->xpath('/cat/principal') ----> Pas bien !!

par bobgalere » 01 avr. 2009, 12:26

Salut !

J'ai encore une petite question pour vous.
J'ai simplifié mon code grace à simpleXML (merci Victor BRITO).

Code : Tout sélectionner

$result = $xml->xpath('/cat/principal'); while(list( , $node) = each($result)) { echo '<div>', $node->asXML(), '</div>'; }

J'aimerai pouvoir mettre un "marqueur" sur la catégorie principale pour pouvoir récupérer tout ce qu"il y a dedans. Un peu comme ca.

Code : Tout sélectionner

<cat> <principal id="principal1">Principal1</principal> <s1 id="produit1">produit1a<s1> <s2 id="produit1">produit1b</s2> <s3 id="produit1">produit1c</s3> <s4 id="produit1">produit1d</s4> </cat>
Est ce que c'est possible de cette façon de récupérer et afficher toutes les valeurs (s1+s2+s3+s4) ?

Merci de votre aide !

par bobgalere » 31 mars 2009, 22:13

wahou je crois que je vais trouver mon bonheur avec ça !

merci pour le lien, je vais étudier tout ca !

par Victor BRITO » 31 mars 2009, 22:07

Et pourquoi se casser la tête à créer une fonction de son cru quand la bibliothèque SimpleXML facilite l'analyse et le parcours d'un fichier XML ? :-* ;)

parser flux xml

par bobgalere » 31 mars 2009, 22:03

Salut,

Je débute en PHP et j'ai un petit problème pour récupérer sur mon site les produits d'un flux xml.

Voila mon flux :

Code : Tout sélectionner

- <XML_EXEMPLE> <cat> <principal>Principal1</principal> <s1 id="produit1">produit1a<s1> <s2 id="produit1">produit1b</s2> <s3 id="produit1">produit1c</s3> <s4 id="produit1">produit1d</s4> </cat> <cat> <principal>Principal2</principal> <s1 id="produit2">produit2a<s/1> <s2 id="produit2">produit2b</s2> <s3 id="produit2">produit2c</s3> <s4 id="produit2">produitd</s4> </cat> </XML_EXEMPLE>
J'utilise ce bout de code pour afficher les catégories principales. Jusque la tout fonctionne.
// FONCTION qui va lire le fichier XML et le placer dans un tableau
// Cette fonction sert de parseur

function lit_xml($fichier,$item,$champs) {
   // on lit le fichier
   if($chaine = @implode("",@file($fichier))) {
      // on explode sur <item>
      // Dans l'exemple il s'agit de 'profil'
      $tmp = preg_split("/<\/?".$item.">/",$chaine);
      // pour chaque <item> donc tous les profils
      for($i=1;$i<sizeof($tmp)-1;$i+=2)
         // on lit les champs demandés <champ> donc il s'agit de 'id' et 'prenom'
         foreach($champs as $champ) {
            $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
            // on ajoute l'élément au tableau
            $tmp3[$i-1][] = @$tmp2[1];
         }
      // et on retourne le tableau dans la fonction
      return $tmp3;
   }
}

// Lecture du FLUX XML sur le serveur
$xml = lit_xml("fichier.xml","menu",array("principal"));

// Une petite boucle suffit pour retrouver les élément du tableau
// retourné dans la fonction lit_xml()
foreach($xml as $row) {

  	echo '<div><a href="'.$row['0'].'" id="current"'.$row['0'].'">',$row['0'],'</div>';


  }
J'aimerai maintenant afficher dans un autre <div> tous les produits d'une des catégories principale. Mais la je coince...

Est ce que vous pouvez me donner une piste pour que je récupère par exemple tous les produits de la catégorie principale 1 ?
Est ce qu'il faut que je rajoute un id ?

Merci de votre aide !!!