Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2428 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  espace de nom dans un xml

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

espace de nom dans un xml

n°2238368
golumest
Posté le 19-09-2014 à 15:43:44  profilanswer
 

Bonjour,
 
J'ai un problème pour récupérer des valeurs avec des espaces de nom :
Je veux récupérer la valeur de la balise <fr> qui n'est pas dans le même ns que sa balise mère...
 
mon fichier XML à parser :
 

Code :
  1. <object name="17RES" jcr:uuid="toto">
  2.   <cdt:InformationsGenerales>
  3.      <cdt:NomAnnonce>
  4.          <fr>Le Miramar</fr>
  5.          <en>Le Miramar</en>
  6.          <de>Le Miramar</de>
  7.          <it>Le Miramar</it>
  8.      </cdt:NomAnnonce>
  9. <cdt:InformationsGenerales>
  10. [..]


 
mon code :

Code :
  1. $xml = simplexml_load_file($path);
  2. foreach ($xml->object as $item) {
  3. //recuperation des ns  
  4. $namespaces = $item->getNameSpaces(true);
  5. $cdtInfo = $item->children($namespaces['cdt']);
  6.         $info=$cdtInfo->InformationsGenerales;
  7.         $NomAnnonce=$info->NomAnnonce;
  8. }


 
quand je fais un print_r sur $NomAnnonce, je n'ai aucun contenu :
SimpleXMLElement Object
(
)
 
Quelle méthode dois-je utiliser pour atteindre la balise fr?
 
merci

mood
Publicité
Posté le 19-09-2014 à 15:43:44  profilanswer
 

n°2238375
rufo
Pas me confondre avec Lycos!
Posté le 19-09-2014 à 16:08:30  profilanswer
 

RTFM : http://php.net/manual/en/function. [...] d-file.php :o
 
4ème paramètre de simplexml_load_file() : $ns...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2238378
golumest
Posté le 19-09-2014 à 16:39:25  profilanswer
 

merci, je n'ai pas pensé à regarder les paramètres de la fonction simplexml_load.
mais ça ne résout pas mon problème, au mieux ça m'économise 2 lignes de code, mais ne fait pas pour autant apparaitre le contenu de la balise NomAnnonce sans doute parceque justement elle ne possede pas d'espace de nom.  
 
j'ai modifié la ligne 1 comme ci-dessous :
$xml = simplexml_load_file($path,null,null,"cdt",TRUE);
 
ce qui provoque un warning :
 main() [function.main]: Cannot assign to an array of nodes (duplicate subnodes or attr detected)
 
Le xml n'est pas valide?

n°2238380
rufo
Pas me confondre avec Lycos!
Posté le 19-09-2014 à 16:53:20  profilanswer
 

Je vient juste de réaliser : "cdt:" n'est en aucun cas un namespace :/ Un namespace est déclaré avec l'attribut "xmlns" dans une balise...
 
"cdt:InformationsGenerales" est donc le nom d'une balise, tout simplement, sans namespace. :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2238383
golumest
Posté le 19-09-2014 à 17:12:48  profilanswer
 

non, non, c'est bien un ns, declaré bien comme il faut dans l'entete du xml (que je n'ai pas mis ds le code), d'ailleurs à la ligne 6 dans ma version, je demande bien de récuperer un ns "cdt".  
 
L'accès aux autres balises avec le ns "cdt" fonctionne bien (que se soit avec ma méthode ou la tienne), mais dès que j'essaye d'acceder aux balises filles qui n'ont, elles, pas de ns, ça ne renvoie rien!
 
j'ai passé mon aprem dessus, et je crois que je vais faire le bourrin en enlevant tous les ns avec un regex, voir un str_replace....


Message édité par golumest le 19-09-2014 à 17:14:55
n°2238385
rufo
Pas me confondre avec Lycos!
Posté le 19-09-2014 à 17:14:30  profilanswer
 

Commence alors par poster ton xml en entier ou au moins une partie suffisamment significative pour qu'on puisse t'aider ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2238386
rufo
Pas me confondre avec Lycos!
Posté le 19-09-2014 à 17:18:28  profilanswer
 

Ligne 7, j'aurais fait :
$info=$cdtInfo->{'cdt:InformationsGenerales'};
 
Tu peux faire aussi un var_dump($cdtInfo); pour voir ce que t'as dedans.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2238438
golumest
Posté le 20-09-2014 à 10:49:05  profilanswer
 

merci de ton aide, je vais essayé avec ta methode, mais avec la mienne le print_r renvoie bien les balises avec le ns, mais pas les balises filles <fr><en><it>

n°2238439
rufo
Pas me confondre avec Lycos!
Posté le 20-09-2014 à 12:15:20  profilanswer
 

C'est peut-être simplexml qui a un bug... Essaye avec la lib DOM de PHP pour voir si t'as le même pb.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2238481
YaGhami
Posté le 21-09-2014 à 20:55:24  profilanswer
 

bug ?

mood
Publicité
Posté le 21-09-2014 à 20:55:24  profilanswer
 

n°2238544
golumest
Posté le 22-09-2014 à 17:03:18  profilanswer
 

merci de votre aide, j'ai finalement opté pour la solution bourrin en enlevant les espaces de noms puis en parsant classiquement le fichier !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  espace de nom dans un xml

 

Sujets relatifs
(module/script) Espace Secur + messagerie interneespace entre ligne de texte et haut du cadre
mkdir avec une espace dans le nom de fichier dans un script.séparateur espace sélection tableau
Impossible de remplacer un espace par un - même avec str_replaceProbleme espace membre
besoin d'aide kit graph. espace texte impossible[erlang] comment gerer les espace sous windows
Programme qui explore les dimensionalité de l'espaceFaire un espace entre 2 images en html
Plus de sujets relatifs à : espace de nom dans un xml


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR