Parser un xml simple

refpartie
WRInaute discret
WRInaute discret
 
Messages: 63
Inscription: 27 Mar 2008

Parser un xml simple

Message le Jeu Déc 04, 2008 20:50

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


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Jeu Déc 04, 2008 21:16

bonsoir,

as tu regardé du coté de SimpleXML ? car on peut difficilement faire plus simple justement :P


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3827
Inscription: 14 Sep 2006

Message le Jeu Déc 04, 2008 21:55

lol, c'est marrant que la réponse se trouve dans la question :mrgreen:

refpartie
WRInaute discret
WRInaute discret
 
Messages: 63
Inscription: 27 Mar 2008

Message le Ven Déc 05, 2008 11:54

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


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Ven Déc 05, 2008 11:55

Bah utilise SimpleXML ! :?


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Ven Déc 05, 2008 12:00

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.

refpartie
WRInaute discret
WRInaute discret
 
Messages: 63
Inscription: 27 Mar 2008

Message le Ven Déc 05, 2008 12:29

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


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Ven Déc 05, 2008 13:04

Euh je traite parfaitement des fichiers XML sans le moindre doctype avec simpleXML justement.

refpartie
WRInaute discret
WRInaute discret
 
Messages: 63
Inscription: 27 Mar 2008

Message le Ven Déc 05, 2008 13:18

avec des balises html sans cdata etc???


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Ven Déc 05, 2008 14:29

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é
WRInaute passionné
 
Messages: 1457
Inscription: 29 Avr 2005

Message le Ven Déc 05, 2008 20:47

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

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.


Leonick
WRInaute accro
WRInaute accro
 
Messages: 18811
Inscription: 8 Aoû 2004

Message le Lun Déc 08, 2008 21:40

XSL côté serveur, je ne vois pas trop l'intérêt. Côté client oui.


aladdin
WRInaute passionné
WRInaute passionné
 
Messages: 1457
Inscription: 29 Avr 2005

Message le Lun Déc 08, 2008 23:22

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
WRInaute accro
 
Messages: 18811
Inscription: 8 Aoû 2004

Message le Mar Déc 09, 2008 1:25

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 !
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: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 ;)
justement, ça consomme beaucoup de ressources pour effectuer des fonctions basiques.


NxtGen
WRInaute impliqué
WRInaute impliqué
 
Messages: 761
Inscription: 24 Oct 2006

Message le Mar Déc 09, 2008 3:13

Avec ca tu devrais pouvoir te débrouiller :

$tmp = preg_split("/<\/?infos>/", $chaine);
$tmp = $tmp[1];

Parser un xml simple

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

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