Bonjour,
Je cherche à parser du XML.
Il existe quantité de petit tuto sur le sujet et c'est plutôt simple.
Cependant j'ai des problèmes avec les namespaces.
Je consulte un web-service qui me répond avec un fichier XML Zippé.
Voila un XML qui ressemble à celui que me renvoie le web-service.
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MessageGetInventaire xmlns="http://www.toto.org/types/" xmlns:ns2="http://www.toto.fr/XML/Schema/"> <ns2:InfoMagazin> <ns2:Adresse> <ns2:CodePays>FR</ns2:CodePays> <ns2:Numero>01999999</ns2:Numero> </ns2:Adresse> <ns2:DateOuverture>2014-01-01</ns2:DateOuverture> <ns2:StockProduitFini>true</ns2:StockProduitFini> </ns2:InfoMagazin> <Produits> <!-- Bizarement cette balise n'a pas le namespace ns2 --> <ns2:Produit> <ns2:IdProduit>11</ns2:IdProduit> <ns2:NomProduit>Savon</ns2:NomProduit> <ns2:Caracteristiques> <ns2:Caracteristique>...</ns2:Caracteristique> </ns2:Caracteristiques> </ns2:Produit> <ns2:Produit> <ns2:IdProduit>12</ns2:IdProduit> <ns2:NomProduit>Crayon</ns2:NomProduit> </ns2:Produit> . . . </Produits> </MessageGetInventaire>
Est ce qu'il est normal d'avoir le namespace ns2 partout sauf sur <Produits> ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $pathToXML = '/var/www/worsp...........file.xml;' $xml = new SimpleXMLElement($pathToXML, null, true); //Je peux récupérer les données du premier bloque ainsi : $ns2 = $namespaces['ns2']; $CodePays = (string)$xml->children($ns2)->InfoMagazin->Adresse->CodePays; $Numero = (string)$xml->children($ns2)->InfoMagazin->Adresse->Numero; //Cependant pour aller chercher les données des produits //Je dois faire ceci $produits = $xml->Produits->children($ns2)
Est ce que cela peut être un oublie des concepteur du web-service ou est ce une norme que je ne connais pas.
De plus je ne vois pas trop l'intérêt de mettre un namespace Partout.
L'intérêt des namespaces c'est qu'on peux en mettre plusieurs différent.
N'y a t'il pas un moyen de Parser mon XML en Ignorant les namespaces ?
Merci pour vos lumière.
Partager