Page 1 sur 1

simplexml et php

Posté : 19 août 2008, 12:56
par franzy51
Bonjour,
j'ai deux questions concernant simplexml et php
voici d'abord mon code xml

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1"?> <produits> <produit> <idproduit>58500150</idproduit> <codearticle></codearticle> <codebarre>3760055184052</codebarre> <reffournisseur></reffournisseur> <nomfournisseur></nomfournisseur> <nomproduit><![CDATA[xxxxx]]></nomproduit> <etat>neuf</etat> <categorie><![CDATA[xxx]]></categorie> <theme>xxxx</theme> <prix>00</prix> <urlficheproduit><![CDATA[http://xxxxxxxxxxxxxx.redir?id_compteur=ID_COMPTEUR&url=http://xxxxxxxxx/sort1%3Ft%3DTRACKING_CODE]]></urlficheproduit> <urlimage><![CDATA[http://xxxxx.jpg]]></urlimage> <urlimageoriginal><![CDATA[http:xxxxjpg]]></urlimageoriginal> <genre><![CDATA[Musical, Spectacle]]></genre> <realisateur><![CDATA[., xxx]]></realisateur> <acteurs></acteurs> <interprete></interprete> <editeur><![CDATA[xxx]]></editeur> <descriptif><![CDATA[xxxx.]]></descriptif> <disponibilite>xx</disponibilite> <dateexpedition>xx</dateexpedition> <fraisdeport>00</fraisdeport> </produit> </produits>
j'ai fait un affichage avec simplexml de cette façon:

Code : Tout sélectionner

<?php $produits = simplexml_load_file('test.xml'); foreach($produits->produit as $produit) { echo '<table width="300">'; echo '<tr>'; echo '<td rowspan="2"><img src="'.($produit->urlimage).'"></td>'; echo '<td colspan="2">',utf8_decode($produit->nomproduit).'</td>'; echo '</tr>'; echo '<tr>'; echo '<td colspan="2">',utf8_decode($produit->descriptif).'</td>'; echo '</tr>'; echo '<tr>'; echo '<td>logo</td>'; echo '<td align="center">',utf8_decode($produit->prix).' €</td>'; echo '<td><a href="'.($produit->urlficheproduit).'" target="_blank">Achetez maintenat</a></td>'; echo '</tr>'; echo '</table>'; } ?>
Maintenant je n'aimerais afficher que les résultats par <genre> dans le fichier xml(<genre>Musical, Spectacle</genre>)
comment faire?
Mon autre question dans le fichier xml il faut remplacer ID_COMPTEUR et TRACKING_CODE par mes propres numéro, dois-je le faire à la main(fichier de 30 Mo) ou existe t'il une autre façon?

Posté : 19 août 2008, 13:27
par Victor BRITO
Pour accéder à l'arborescence de ton XML à des niveaux plus bas, il suffit de reprendre la même méthode que pour atteindre chaque élément produit :
$produits = simplexml_load_file('test.xml'); 

foreach($produits->produit as $produit) {
  echo $produit -> genre;
}
Pour modifier ton XML sans le faire à la main, tu as le DOM XML.

Posté : 19 août 2008, 13:47
par franzy51
Tout d'abord merci pour la réponse,
mais comme vous avez pu le constater je débute alors c'est un peu compliqué(mais j'ai bien avancé grâce à ce forum).
En fait je veux afficher le genre mais en plus ici par exemple la catégorie musical,spectacle et que celle-ci et pas les autres.

Code : Tout sélectionner

<genre><![CDATA[Musical, Spectacle]]></genre>
Pour DOM XML pourriez-vous m'apporter un peu plus d'aide?
En vous remerciant[/code]

J'ai essayé ce code

Code : Tout sélectionner

$produits = simplexml_load_file('test.xml')->xpath('/produit/genre/attribute::Musical,Spectacle');
mais cela ne fonctionne pas