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 16/12/2007, 11h08   #1
Membre éclairé
 
Avatar de keaton7
 
Inscription : octobre 2007
Messages : 676
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 676
Points : 320
Points : 320
Par défaut [SimpleXML] Utilisation pas si simple

Bonjour,

Je parse un fichier XML avec la fonction simpleXML de php5.

J'ai un fichier php (c'est quasiment exactement l'exemple de la doc pour le moment ...) qui contient mon fichier xml avec des infos pour le parseur.

Code :
1
2
3
4
5
6
<?php
$xmlstr = <<<XML
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root><categorie nom="Categorie de test" type="2"><entete>bonjour</entete><texte1>contenu d ela colone 1</texte1><texte2>contenu d ela colone 2</texte2></categorie><categorie nom="gtytuytuytuytytuuy" type="2"><entete>yuyt</entete><texte1>tyty</texte1><texte2>utyutyu</texte2></categorie><categorie nom="dfgdfdf" type="2"><entete>gfg</entete><texte1>df</texte1><texte2>df</texte2></categorie></root>
XML;
?>
et un autre fichier qui appelle ce dernier :

Code :
1
2
3
include FICHIER_XML;
 
$xml = new SimpleXMLElement($xmlstr);
J'ai alors deux questions :
quelle action j'opère lorsque j'utilise cet opérateur : "<<<" (s'il s'agit encore dans ce cas d'un opérateur) et comment modifier ce code pour que je puisse appeller un fichier XML standard, sans déclaration de variables préalable, c'est à dire en incluant ça dans la deuxieme page.

J'ai tenté bien des manipulatuions qui se sont révélées infructueuses, mais sûrement à cause ce cette synthaxe tres sensible à la casse que je comprend qu'a moitié.

Merci d'avance de vos réponses.
keaton7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 11h22   #2
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
Citation:
Envoyé par keaton2000
quelle action j'opère lorsque j'utilise cet opérateur : "<<<" (s'il s'agit encore dans ce cas d'un opérateur)
C'est la syntaxe que l'on appelle HEREDOC pour "déclarer/affecter" une chaîne de caractères.

Citation:
Envoyé par keaton2000
comment modifier ce code pour que je puisse appeller un fichier XML standard, sans déclaration de variables préalable, c'est à dire en incluant ça dans la deuxieme page
Vous pouvez aussi le faire via le constructeur mais il faut préciser son troisième paramètre à TRUE :
Code :
$sxml = new SimpleXMLElement('monfichier.xml', 0, TRUE);
Ou utiliser plus simplement la fonction simplexml_load_file :
Code :
$sxml = simplexml_load_file('monfichier.xml');
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 11h25   #3
Membre éclairé
 
Avatar de keaton7
 
Inscription : octobre 2007
Messages : 676
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 676
Points : 320
Points : 320
Super, merci beaucoup
keaton7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 13h58   #4
Membre éclairé
 
Avatar de keaton7
 
Inscription : octobre 2007
Messages : 676
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 676
Points : 320
Points : 320
on peut résumer l'utilisation de la syntaxe : ...

Code :
1
2
3
4
5
6
7
8
9
10
11
$myVar = <<< TOTO
texte sans interet
texte sans interet
  texte sans interet
    texte sans interet
      texte sans interet
    texte sans interet
  texte sans interet
texte sans interet
texte sans interet
TOTO;
... a la déclaraiton d'une chaine de caracteres multiligne ?

Est-ce équivalent à :
Code :
$myVar = "texte sans interet\ntexte sans interet\ntexte sans interet\n&nbsp;&nbsp;texte sans interet\n&nbsp;&nbsp;&nbsp;&nbsp;texte sans interet\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Texte sans interet\n&nbsp;&nbsp;&nbsp;&nbsp;Texte sans interet\n&nbsp;&nbsp;Texte sans interet\ntexte sans interet\nTexte sans interet";
keaton7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 14h06   #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
Oui (aux espaces prêt et suivant les caractères utilisés par votre système pour marquer les nouvelles lignes). Il existe, comme souvent, plusieurs façons d'écrire une seule et même chose ...
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 14h31   #6
Membre éclairé
 
Avatar de keaton7
 
Inscription : octobre 2007
Messages : 676
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 676
Points : 320
Points : 320
Puisque tu réponds très vite, je me permet de te poser une autre question du même ordre, au sujet de l'utilisaiton de la classe simpleXML

Code :
1
2
3
4
5
6
<?php
$xmlstr = <<<XML
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root><categorie nom="Categorie de test" type="2"><entete>bonjour</entete><texte1>contenu d ela colone 1</texte1><texte2>contenu d ela colone 2</texte2></categorie><categorie nom="gtytuytuytuytytuuy" type="2"><entete>yuyt</entete><texte1>tyty</texte1><texte2>utyutyu</texte2></categorie><categorie nom="dfgdfdf" type="2"><entete>gfg</entete><texte1>df</texte1><texte2>df</texte2></categorie></root>
XML;
?>
Dans cet exemple déjà cité plus haut, tu peux remarquer que le contenu du XML généré est sur une seule ligne. Sais-tu comment l'ordonner automatiquement en passant par cette classe ?
keaton7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 14h35   #7
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
C'est à dire ? L'extension SimpleXML, pour autant que je sache, ne dispose d'aucune option de formatage (tout est compacté) contrairement à l'extension DOM, qui permet de le faire (ou non, par défaut).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 15h50   #8
Membre éclairé
 
Avatar de keaton7
 
Inscription : octobre 2007
Messages : 676
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 676
Points : 320
Points : 320
oui j'ai vu la manipulation avec les objets DOM mais je trouve fastidieux de passer d'un objet à l'autre uniquement pour un formatage.

J'avais éspéré que simpleXML paliait à cette carrence via une fonciton que je ne connaissais pas .

D'ailleurs dans la doc hereDoc de php, il y a une ligne qui me fascine :

Code :
echo "Ceci est une valeur de variable variable : {${$name}}";
Qu'est ce que c'est une variable variable ?
keaton7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2007, 16h38   #9
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
Citation:
Envoyé par keaton2000
Qu'est ce que c'est une variable variable ?
Une variable dynamique (application : Comment appeler une variable dont le nom est stocké dans une autre variable ?).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 10h57   #10
Membre éclairé
 
Avatar de keaton7
 
Inscription : octobre 2007
Messages : 676
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 676
Points : 320
Points : 320
merci
keaton7 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 13h18.


 
 
 
 
Partenaires

Hébergement Web