Lire et récupérer des info XML

Mammouth du PHP | 643 Messages

22 mars 2017, 23:36

Salut à tous.
Voila je galère de nouveau dans un XML pour récupérer les donnés:

J'essai de récupérer les infos du xml de la sorte, mais rien ne marche.... je fait fausse route ?
$flux = simplexml_load_file('datafeed_325105.xml'); // Source du flux.xml
	set_time_limit(0);

           
    // On entre les entrees en bdd 
	function multiexplode ($delimiters,$string) {
   
    $ready = str_replace($delimiters, $delimiters[0], $string);
    $launch = explode($delimiters[0], $ready);
    return  $launch;
	}                
    foreach ($flux->prod as $item) {
		

    // Récupération des données en fonction du tagname du XML
	$number = addslashes($item->pId);
	$categorie = addslashes($item->cat);
	$prix = addslashes($item->price->buynow);	
	$titre = addslashes($item->text->name);	
	$description = addslashes($item->text->desc);	


	echo $number.'<br>';
	echo $categorie.'<br>';
	echo $prix.'<br>';
	echo $titre.'<br>';
Voici l'exemple du contenu d'un article du XML:
<prod id="3803121649" lang="fr"><brand/>
<cat><mCat>FILM</mCat></cat>
<price curr="EUR"><buynow>8.50</buynow><store>0.00</store></price>
<text>
	<name>ARCTIQUE</name>
	<desc>ici un texte</desc>
</text>
<uri>
	<awTrack>http://www.awin1.com/pclick.php?p=3803121649&a=325105&m=7430</awTrack>
	<awImage>http://images.productserve.com/noimage.gif</awImage> 
	<mImage>https://static.ticketmaster.fr/static/images/vignettes/a_271920.gif</mImage>
	<mLink>http://www.awin1.com/pclick.php?p=3803121649&a=325105&m=7430</mLink>
</uri>
	<vertical id="6" name="Tickets">
	<eventDate>30/03/2017 12:30</eventDate>
	<eventLocationCity>PARIS</eventLocationCity>
	<eventLocationCountry>FRANCE</eventLocationCountry>
	<eventLocationRegion>75019</eventLocationRegion>
	<primaryArtist>GEODE</primaryArtist>
	<venueAddress>26, avenue Corentin Cariou</venueAddress>
	<venueName>La Geode</venueName>
</vertical>
<pId>271920</pId></prod>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 mars 2017, 10:48

salut,

premier test il y a une erreur au chargement du fichier xml
Warning: simplexml_load_file(): datafeed_325105.xml:15: parser error : EntityRef: expecting ';'

si tu n'as pas cette erreur iil faut impérativement que tu actives l'affichage des erreurs (display_error = on) et que tu on niveau d'erreur soit à E_ALL (error_reporting=E_ALL).

la en l'occurence ce sont les & qui doivent être échappé en XML => &amp;

ensuite $flux n'a pas de propriété prod ($flux->prod) parce que prod c'est le tag racine.

pour voir ce qu'il y a dans $flux utilise un IDE en debug ou un bon vieux var_dump (ou xdebug_var_dump si tu as xdebug)

Si tu peux avoir plusieurs prod il faut mettre tous ça dans un tag "racine" (du coup c'est souvent root :) )

vu que le bbcode déconne un poil tu trouveras un dump de $flux et un exemple de xml avec boucle (qui fonctionne avec ton code ici
et en même temps ton code corrigé pour afficher la catégorie
https://gist.github.com/anonymous/9caaa ... 414a01a95f


@+
Il en faut peu pour être heureux ......