Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche DOM).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/10/2007, 11h37   #1
Nouveau Membre du Club
 
Étudiant
Inscription : mai 2007
Messages : 143
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2007
Messages : 143
Points : 35
Points : 35
Par défaut [SimpleXML] Problème au début de SimpleXML

Bonjour,

Je parse mon premier XML aujorud'hui et j'utilise simpleXML.

pour cela, j'ai suivi le tutorial du site

Voici la forme de mon XML.

Code :
1
2
3
4
5
6
<TOP>
 <under>
  <general>
    <titre>test</titre>
     <libelle_general> test 1</libelle_general>
      <date-post>10/10/2007</date-post>
je n'arrive pas a affichier la donnée dans <date-post>. Aparament, cela est du au "-" dans le tag car j'arrive a afficher tous ceux que je veux.

d'où cela peux venir

Merci
Mehdib92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 14h29   #2
Invité régulier
 
Inscription : mai 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 21
Points : 8
Points : 8
Je pense qu'il faut éviter les "-" et les "." dans les noms d'éléments. Essaie "date_post" pour voir.
Dookie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 14h33   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Le tiret n'est pas de circonstance. Cependant, il semble possible de contourner cette limitation du langage via une syntaxe comme celle-ci :
Code :
1
2
3
<?php
$sxml = simplexml_load_file('test.xml');
echo $sxml->under->general->{'date-post'};
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 14h49   #4
Invité régulier
 
Inscription : mai 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 21
Points : 8
Points : 8
Ou encore en utilisant xpath:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?php
  // Chargement du fichier XML
  $fichier_xml = simplexml_load_file('test.xml');
 
  echo "<h1>Affichage de date-post</h1>\n";
 
  $xpath = $fichier_xml->xpath('//general/date-post');
 
  foreach($xpath as $date) {
    echo utf8_decode($date);
  }
?>
Mais j'évite quand même les tirets dans les noms d'éléments. Maintenant, rien n'interdit d'y avoir recours je pense. Julp (ou quelqu'un d'autre) donnera surement un avis plus éclairé sur la question

Un lien qui pourrait t'être utile: http://www.w3schools.com/xml/xml_elements.asp ("Element Naming" en bas de page)
Dookie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 15h44   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Si j'interprète convenablement la spécification XML, le tiret n'est pas interdit (en pratique déconseillé c'est autre chose). D'autre part, il s'agit ici d'une limitation, si je puis dire, du langage PHP (de son parser plus précisément) : il cherchera à utiliser le tiret comme l'opérateur de soustraction. Voilà pourquoi il faut utiliser la forme que j'ai proposé pour que votre nom de balise soit dans son ensemble considérée comme une chaîne voir une expression XPath suivant les cas (comme proposée par Dookie).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 17h05   #6
Nouveau Membre du Club
 
Étudiant
Inscription : mai 2007
Messages : 143
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2007
Messages : 143
Points : 35
Points : 35
oki merci.

En fait, je suis obligé d'utiliser le - car je lis le fichier xml d'un autre site

Citation:
Envoyé par julp Voir le message
Le tiret n'est pas de circonstance. Cependant, il semble possible de contourner cette limitation du langage via une syntaxe comme celle-ci :
Code :
1
2
3
<?php
$sxml = simplexml_load_file('test.xml');
echo $sxml->under->general->{'date-post'};
merci ca marche

Par contre ta methode

Code :
1
2
3
<?php
$sxml = simplexml_load_file('test.xml');
echo $sxml->under->general->{'date-post'};
[/code]

marche pas.

j'utilise

Code :
1
2
3
4
5
6
foreach($offres->offre as $offre)
{
	foreach($offre->general as $general)
	{
		echo "<h2><font color='red'>Annonce :</font></h2>";
		echo "<b><u>Intitulé du poste :</u></b> " ,utf8_decode($general->libelle_general)."<br />";
Mehdib92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h26.


 
 
 
 
Partenaires

Hébergement Web