Parser un flux XML en PHP pour récupérer une valeur

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par milkiway, 10 Février 2011.

  1. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 196
    J'aime reçus:
    0
    Bonjour,

    J'ai un flux XML que je veux parser en PHP. J'utilise simplexml_load_file.
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <catalogue id="1">
     <progname>Panzani</progname>
     <store>
      <name>Panzani Pasta</name>
      <products>
       <product>
        <storeData>
         <data type="modele">Farfale</data>
         <data type="prix_catalogue">3.35</data>
        </storeData>
      </product>
      </products>
     </store>
    </catalogue>
    J'arrive sans souci à récupérer la valeur de "progname" (Panzani ici), store->name mais je ne vois pas du tout comment récupérer la donnée Farfale par exemple.
    J'ai testé par store->products->product->storeData->data['modele'] mais ça ne marche pas. Pourquoi ? Comment faire ?

    Un grand merci
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 182
    J'aime reçus:
    351
    PHP:
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php <br />$string </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword"><<<EOT<br /></span><span class="syntaxdefault"><?xml version="1.0" encoding="UTF-8"?><br /><catalogue id="1"><br /><progname>Panzani</progname><br /><store><br />  <name>Panzani Pasta</name><br />  <products><br />   <product><br />    <storeData><br />     <data type="modele">Farfale</data><br />     <data type="prix_catalogue">3.35</data><br />    </storeData><br />  </product><br />  </products><br /></store><br /></catalogue><br /></span><span class="syntaxkeyword">EOT;<br /></span><span class="syntaxdefault">$xml </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> simplexml_load_string</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$string</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$data </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">(string)</span><span class="syntaxdefault"> $xml</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">store</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">products</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">product</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">storeData</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">data</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];<br /><br /></span><span class="syntaxdefault">echo $data</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">?><br /></span></span>
    http://codepad.org/ohKMRETR
     
  3. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 196
    J'aime reçus:
    0
    Merci beaucoup, en fait par ce biais là j'y arrivais bien mais ce n'est pas très sur dans le sens où je en suis pas certain que 0 soit bien pour modèle (il suffit qu'il change de place).
    J'ai donc fait autrement :
    foreach($flux->store->products->product as $product){
    foreach ($product->storeData->data as $node) {
    $data[(string) $node['type']] = (string) $node;
    }
    Fourni sur un autre forum.
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 182
    J'aime reçus:
    351
    Avec SimpleXML et Xpath
    PHP:
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php&nbsp;<br />$string&nbsp;</span><span class="syntaxkeyword">=&nbsp;<<<EOT<br /></span><span class="syntaxdefault"><?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?><br /><catalogue&nbsp;id="1"><br /><progname>Panzani</progname><br /><store><br />&nbsp;&nbsp;<name>Panzani&nbsp;Pasta</name><br />&nbsp;&nbsp;<products><br />&nbsp;&nbsp;&nbsp;<product><br />&nbsp;&nbsp;&nbsp;&nbsp;<storeData><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<data&nbsp;type="modele">Farfale</data><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<data&nbsp;type="prix_catalogue">3.35</data><br />&nbsp;&nbsp;&nbsp;&nbsp;</storeData><br />&nbsp;&nbsp;</product><br />&nbsp;&nbsp;</products><br /></store><br /></catalogue><br /></span><span class="syntaxkeyword">EOT;<br /></span><span class="syntaxdefault">$xml&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">simplexml_load_string</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$string</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$modele&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$xml</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">xpath</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/catalogue/store/products/product/storeData/data[@type&nbsp;=&nbsp;"modele"]'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$prix_catalogue&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$xml</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">xpath</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/catalogue/store/products/product/storeData/data[@type&nbsp;=&nbsp;"prix_catalogue"]'</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">$modele&nbsp;</span><span class="syntaxkeyword">=&nbsp;(string)&nbsp;</span><span class="syntaxdefault">$modele</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">$prix_catalogue&nbsp;</span><span class="syntaxkeyword">=&nbsp;(string)&nbsp;</span><span class="syntaxdefault">$prix_catalogue</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];<br /><br />echo&nbsp;</span><span class="syntaxdefault">$modele</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'<br&nbsp;/>'</span><span class="syntaxkeyword">;<br />echo&nbsp;</span><span class="syntaxdefault">$prix_catalogue</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">?><br /></span></span>
     
Chargement...
Similar Threads - Parser flux XML Forum Date
Problem pour parser un flux xml avec magpierss Développement d'un site Web ou d'une appli mobile 28 Juin 2008
Parser et mettre en page php un gros flux xml Développement d'un site Web ou d'une appli mobile 2 Janvier 2007
parser et sauver un flux XML dans une bdd > je sèche Développement d'un site Web ou d'une appli mobile 22 Février 2006
Parser flux atom facebook Développement d'un site Web ou d'une appli mobile 15 Février 2010
Feedparser et magpierss : deux flux différents sur deux div Développement d'un site Web ou d'une appli mobile 17 Septembre 2008
Parser un flux dotclear en php Développement d'un site Web ou d'une appli mobile 17 Juin 2008
Comment parser le flux de Jamendo.com avec les images? Développement d'un site Web ou d'une appli mobile 28 Août 2006
Parser en php un fichier xml Développement d'un site Web ou d'une appli mobile 12 Juin 2020
Parser un fichier xml : simplexml_load_file Développement d'un site Web ou d'une appli mobile 5 Avril 2019
Problème pour parser du xml Développement d'un site Web ou d'une appli mobile 26 Février 2015
Parser du XML Développement d'un site Web ou d'une appli mobile 31 Mars 2012
Parser XML et Mysql Administration d'un site Web 21 Décembre 2011
parser une page html Développement d'un site Web ou d'une appli mobile 2 Mars 2010
Problème pour parser du contenu en PHP Développement d'un site Web ou d'une appli mobile 2 Février 2010
Parser une page web en html Développement d'un site Web ou d'une appli mobile 31 Janvier 2010
Problème feedparser et nouvelle page phpbb Développement d'un site Web ou d'une appli mobile 14 Janvier 2010
problème utilisation feedparser Développement d'un site Web ou d'une appli mobile 3 Janvier 2010
DOM Parser (probleme) Développement d'un site Web ou d'une appli mobile 31 Décembre 2009
Parser une page web en utilisant php Développement d'un site Web ou d'une appli mobile 25 Décembre 2009
parser du xml Développement d'un site Web ou d'une appli mobile 30 Mars 2009