Parser flux XML + simpleXML

Eléphanteau du PHP | 16 Messages

29 juin 2008, 14:14

Bonjour,
J'ai un petit probléme a parser un flux a l'aide de simpleXML, voila ca que j'ai

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1" ?> - <ListeSet> - <Set id="01767"> <DateParution>28/01/2008</DateParution> <Titre>Photo</Titre> <Description>Tres belle photo</Description> <Url>......</Url> <Note>8</Note> </Set> </ListeSet>
<?php 
$xml = simplexml_load_file('test.xml'); 
foreach ($ListeSet-> Set as $info) { 
print $info['id']; 
print $info->Titre; 
print $info->Description; 
print $info->Url; 
print $info->Note; 
} 
?>


et impossible d'afficher quoi que soit, à la place j'ai pleins de messages d'erreur.

Je vous remercie d'avance pour votre aide.

lux
Eléphant du PHP | 372 Messages

29 juin 2008, 14:17

Salut.

Si tu nous donnais les messages d'erreurs ? C'est la dedans qu'est expliqué ou est l'erreur :P

Eléphanteau du PHP | 16 Messages

29 juin 2008, 14:23

voila les erreur :
Image

Mammouth du PHP | 1668 Messages

29 juin 2008, 15:00

Je dirait que SimpleXML n'est pas installé...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

lux
Eléphant du PHP | 372 Messages

29 juin 2008, 15:00

Il a des problèmes pour tout charger correctement...

Il y a un espace avant ton : <?xml version="1.0" encoding="iso-8859-1" ?> ?

Car il te dit que cette ligne doit être la première du fichier !

Ensuite t'as des erreurs, car tu as des "-" devant les "<" ... c'est quoi ces "-" ?

Donc en corrigeant comme ça ? :

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1" ?> <ListeSet> <Set id="01767"> <DateParution>28/01/2008</DateParution> <Titre>Photo</Titre> <Description>Tres belle photo</Description> <Url>......</Url> <Note>8</Note> </Set> </ListeSet>

Eléphanteau du PHP | 16 Messages

29 juin 2008, 15:09

Effectivement il y avait une erreur dans le fichier xml, grace a t'as correction j'ai pu corriger tous ca, mais il y en a une que persiste :

Code : Tout sélectionner

Warning: Invalid argument supplied for foreach() in /home.10.24/bbenjj/www/test/parser.php on line 3
Ligne 3 :
foreach ($ListeSet-> Set  as $info) { 
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
Modifié en dernier par bbenjj le 29 juin 2008, 15:26, modifié 1 fois.

lux
Eléphant du PHP | 372 Messages

29 juin 2008, 15:21

foreach ($ListeSet-> Set as $info)
Ça doit coincer la :
$ListeSet-> Set
Soit l'espace est en trop, soit il faut faire comme ça :
$liste = $ListeSet->Set;
foreach ($liste as $info){}

Eléphanteau du PHP | 16 Messages

29 juin 2008, 15:35

Rien a faire, même aprés avoir supprimé l'éspace ou remplacer par
$xml = simplexml_load_file('test.xml'); 
$liste = $ListeSet->Set; 
foreach ($liste as $info)
 { 
...
j'ai toujours la même erreur

Code : Tout sélectionner

Warning: Invalid argument supplied for foreach() in /home.10.24/clitx/www/smart/test/parser.php on line 4

Mammouth du PHP | 1511 Messages

29 juin 2008, 15:39

$ListeSet n'est pas défini étant donné que ta ressource simpleXml est contenu dans $xml.
@++ ;)

lux
Eléphant du PHP | 372 Messages

29 juin 2008, 15:40

Fais un
print_r($liste);
pour voir ce qu'il y a de beau dans ce tableau.

Comme ça tu verras de suite si foreach peut le lire ou pas. :wink:

lux
Eléphant du PHP | 372 Messages

29 juin 2008, 15:44

$ListeSet n'est pas défini étant donné que ta ressource simpleXml est contenu dans $xml.
@++ ;)
Ha ben c'est ça j'avais pas vu.

Donc bbenjj tu peux corriger, ça devrait marcher après :wink:

Eléphanteau du PHP | 16 Messages

29 juin 2008, 15:48

Parfait ca marche :D :)

Pour ce qui en auront besoin voici le produit finit
<?php 
$xml = simplexml_load_file('test.xml'); 
$liste = $xml->Set; 
foreach ($liste as $info){
 
 print $info['id']; 
 print $info->Titre;
 print $info->Description;
 print $info->Url;
 print $info->Note;
} 
?>  

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1" ?> <ListeSet> <Set id="01767"> <DateParution>28/01/2008</DateParution> <Titre>Photo</Titre> <Description>Tres belle photo</Description> <Url>......</Url> <Note>8</Note> </Set> </ListeSet>
Et encore merci

lux
Eléphant du PHP | 372 Messages

29 juin 2008, 15:49

Tu peux aller mettre le topic en "Resolu", y a un bouton en haut de la page pour cela :wink:

De rien 8-)