Parser un xml simple
17 messages
• Page 1 sur 2 • 1, 2
- refpartie
- WRInaute discret

- Messages: 63
- Inscription: 27 Mar 2008
Parser un xml simple
Bonjour,
Je souhaiterai parser un xml (via php), mais les exemples sur le net sont bien plus évolués que ce que je veux faire.
J'ai un fichier xml formaté comme suit :
<data>
<infos>l'info 1</infos>
<infos>l'info 2</infos>
<infos>l'info 3</infos>
</data>
je voudrais parcourir ce fichier et afficher dans ma page php :
La listes des infos :
l'info 1
l'info 2
l'info 3
C'est pas bien dur, mais je n'y arrive pas
Merci pour votre aide
Je souhaiterai parser un xml (via php), mais les exemples sur le net sont bien plus évolués que ce que je veux faire.
J'ai un fichier xml formaté comme suit :
<data>
<infos>l'info 1</infos>
<infos>l'info 2</infos>
<infos>l'info 3</infos>
</data>
je voudrais parcourir ce fichier et afficher dans ma page php :
La listes des infos :
l'info 1
l'info 2
l'info 3
C'est pas bien dur, mais je n'y arrive pas
Merci pour votre aide
- refpartie
- WRInaute discret

- Messages: 63
- Inscription: 27 Mar 2008
Merci pour vos réponse, mais pas si simple tout ca ^^
j'ai un bout de script, mais ca ne m'affiche que le premier <infos>
function lit_xml($fichier,$item,$champs) {
$compt = 0;
if($chaine = @implode("",@file($fichier))) {
$tmp = preg_split("/<\/?".$item.">/",$chaine);
for($i=1;$i<sizeof($tmp)-1;$i+=2)
// ========= dois y avoir une erreur dans ce qui suit? =======
foreach($champs as $champ) {
$val = preg_split("/<\/?".$champ.">/",$tmp[$i]);
$tmp2[$compt] = $val;
$compt = $compt + 1;
}
return $tmp2;
}
}
//Lecture
$xml = lit_xml("monfichier.xml","data",array("infos"));
$i=0;
foreach($xml as $row) {
$i = $i + 1;
echo $row[$i];
}
Merci pour votre aide
j'ai un bout de script, mais ca ne m'affiche que le premier <infos>
function lit_xml($fichier,$item,$champs) {
$compt = 0;
if($chaine = @implode("",@file($fichier))) {
$tmp = preg_split("/<\/?".$item.">/",$chaine);
for($i=1;$i<sizeof($tmp)-1;$i+=2)
// ========= dois y avoir une erreur dans ce qui suit? =======
foreach($champs as $champ) {
$val = preg_split("/<\/?".$champ.">/",$tmp[$i]);
$tmp2[$compt] = $val;
$compt = $compt + 1;
}
return $tmp2;
}
}
//Lecture
$xml = lit_xml("monfichier.xml","data",array("infos"));
$i=0;
foreach($xml as $row) {
$i = $i + 1;
echo $row[$i];
}
Merci pour votre aide
-

Bacteries - WRInaute passionné

- Messages: 1369
- Inscription: 27 Mai 2004
C'est amusant de voir le nombre de personne qui tente de lire un fichier XML avec des fonctions de string (refpartie je ne me moque pas, juste un constat). Alors que justement le format XML est fait pour être accédé de façon simple via des librairies faites pour...
Sinon oui pour rabacher : simpleXML.
Sinon oui pour rabacher : simpleXML.
- refpartie
- WRInaute discret

- Messages: 63
- Inscription: 27 Mar 2008
Effectivement le traitement d'un fichier xml bien construit est vraiment simple avec SimpleXML
Mais mon fichier ne répond pas au norme d'un fichier XML.
<data>
<infos><b>L'info du jour</b><br/>Détails de l'info <div align="center">texte texte</div></infos>
<infos><b>L'info de la veille</b><br/>Détails de l'info <div align="center">texte texte</div></infos>
</data>
Mon fichier n'a pas de doctype et autres... je dois donc le prendre comme un fichier "Texte"
Voilà, je demande une SimpleAide
Merci à vous
ps : malheureusement je ne peux pas adapter le format du fichier xml
Mais mon fichier ne répond pas au norme d'un fichier XML.
<data>
<infos><b>L'info du jour</b><br/>Détails de l'info <div align="center">texte texte</div></infos>
<infos><b>L'info de la veille</b><br/>Détails de l'info <div align="center">texte texte</div></infos>
</data>
Mon fichier n'a pas de doctype et autres... je dois donc le prendre comme un fichier "Texte"
Voilà, je demande une SimpleAide
Merci à vous
ps : malheureusement je ne peux pas adapter le format du fichier xml
-

Bacteries - WRInaute passionné

- Messages: 1369
- Inscription: 27 Mai 2004
refpartie a écrit:<data>
<infos><b>L'info du jour</b><br/>Détails de l'info <div align="center">texte texte</div></infos>
<infos><b>L'info de la veille</b><br/>Détails de l'info <div align="center">texte texte</div></infos>
</data>
A quelle niveau c'est pas un XML valide?
C'est du xHTML là (car <br/>) donc valide xml.
-

aladdin - WRInaute passionné

- Messages: 1457
- Inscription: 29 Avr 2005
heuuu je ne sais pas si je suis le seul à le penser, mais les parseurs XML ne sont pas fait pour ce que tu souhaite faire !
Il faut distinguer deux choses quand on manipule de l'XML
1 - le fichier XML stock de l'information qu'on va traiter, un fichier de configuration par exemple, dans ce cas, parser du XML est justifié et on ne peux pas faire autrement
2 - le fichier XML contient des données qu'on souhaite formater (ton cas), et dans ce cas là, il y a XSL qui est beaucoup beaucoup plus simple pour ce que tu souhaite faire
un truc du genre
après tu peux appliquer une transformation coté client ou coté serveur en fonction de tes besoins.
Il faut distinguer deux choses quand on manipule de l'XML
1 - le fichier XML stock de l'information qu'on va traiter, un fichier de configuration par exemple, dans ce cas, parser du XML est justifié et on ne peux pas faire autrement
2 - le fichier XML contient des données qu'on souhaite formater (ton cas), et dans ce cas là, il y a XSL qui est beaucoup beaucoup plus simple pour ce que tu souhaite faire
un truc du genre
- Code: Tout sélectionner
...
<xsl:for-each select="/data/infos">
<xsl:value-of select="text()" />
</xsl:for-each>
...
après tu peux appliquer une transformation coté client ou coté serveur en fonction de tes besoins.
-

aladdin - WRInaute passionné

- Messages: 1457
- Inscription: 29 Avr 2005
Leonick a écrit:XSL côté serveur, je ne vois pas trop l'intérêt. Côté client oui.
bein tous les clients ne supportent pas la transformation XSL ... bon la plupart le font je sais ... mais ça dépend des cas d'utilisation (terminaux mobiles par exemple)
sinon l'utilité coté serveur c'est que ca reste toujours plus simple de mettre en forme de l'XML via une transformation XSL que de le parser !
XML/XSL pour la mise en forme c'est le même principe que les templates pour les CMS, donc que la transformation se fasse coté serveur ou coté client ca ne change rien
-

Leonick - WRInaute accro

- Messages: 18811
- Inscription: 8 Aoû 2004
C'est "visuellement" plus simple, mais le fichier devra quand même être parsé, si ce n'est par siplexml, ça sera par le processeur xslt, qui, soit dit en passant, n'est pas obligatoirement installé sur tous les serveurs web.aladdin a écrit:sinon l'utilité coté serveur c'est que ca reste toujours plus simple de mettre en forme de l'XML via une transformation XSL que de le parser !
justement, ça consomme beaucoup de ressources pour effectuer des fonctions basiques.aladdin a écrit:XML/XSL pour la mise en forme c'est le même principe que les templates pour les CMS, donc que la transformation se fasse coté serveur ou coté client ca ne change rien
17 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
Consultez la description détaillée des produits ou services de Google suivants : API Google Checkout
- Transformer des citations en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

