espace de nom dans un xml - PHP - Programmation
Marsh Posté le 19-09-2014 à 16:08:30
RTFM : http://php.net/manual/en/function. [...] d-file.php
4ème paramètre de simplexml_load_file() : $ns...
Marsh Posté le 19-09-2014 à 16:39:25
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?
Marsh Posté le 19-09-2014 à 16:53:20
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.
Marsh Posté le 19-09-2014 à 17:12:48
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....
Marsh Posté le 19-09-2014 à 17:14:30
Commence alors par poster ton xml en entier ou au moins une partie suffisamment significative pour qu'on puisse t'aider
Marsh Posté le 19-09-2014 à 17:18:28
Ligne 7, j'aurais fait :
$info=$cdtInfo->{'cdt:InformationsGenerales'};
Tu peux faire aussi un var_dump($cdtInfo); pour voir ce que t'as dedans.
Marsh Posté le 20-09-2014 à 10:49:05
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>
Marsh Posté le 20-09-2014 à 12:15:20
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.
Marsh Posté le 22-09-2014 à 17:03:18
merci de votre aide, j'ai finalement opté pour la solution bourrin en enlevant les espaces de noms puis en parsant classiquement le fichier !
Marsh Posté le 19-09-2014 à 15:43:44
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 :
mon code :
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