Parser un xml simple

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

refpartie
WRInaute discret
WRInaute discret
 
Messages: 53
Inscription: Jeu Mar 27, 2008 21:14

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 accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

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: 3062
Inscription: Jeu Sep 14, 2006 4:53

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: 53
Inscription: Jeu Mar 27, 2008 21:14

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 accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

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

Bah utilise SimpleXML ! :?


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

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: 53
Inscription: Jeu Mar 27, 2008 21:14

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 accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

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: 53
Inscription: Jeu Mar 27, 2008 21:14

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

avec des balises html sans cdata etc???


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

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: 925
Inscription: Ven Avr 29, 2005 12:26

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: 12351
Inscription: Dim Aoû 08, 2004 20:24

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: 925
Inscription: Ven Avr 29, 2005 12:26

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: 12351
Inscription: Dim Aoû 08, 2004 20:24

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 passionné
WRInaute passionné
 
Messages: 730
Inscription: Mar Oct 24, 2006 4:35

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

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités