Parser un flux xml

Paulux
Invité n'ayant pas de compte PHPfrance

30 juil. 2006, 19:31

Bonjour,

J’ai un souci pour extraire les données d’un flux xml que je reçois :

Pour exemple et pour simplifier, voici un fichier de structure identique (mais allégé ici)

Je reçois donc ceci.

Code : Tout sélectionner

<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <ListCarsResponse xmlns="http://blablabla.com/webservices/"> <ListCarsResult> <CAR_list xmlns="http://blablabla.com/webservices/CAR_list.xsd"> <Product ProductId="13956" provider="MySelf" name="Peugeot" type="106"> <ColorType productId="13956;19630" name="Black"> </ColorType> </Product> <Product ProductId="22568" provider="MySelf" name="Peugeot" type="406"> <ColorType productId="22568;24575" name="Red"> </ColorType> </Product> </CAR_list> </ListCarsResult> </ListCarsResponse> </soap:Body> </soap:Envelope>
si je simplifie mon fichier comme ça :

Code : Tout sélectionner

<?xml version="1.0" encoding="utf-8"?> <CAR_list xmlns="http://blablabla.com/webservices/CAR_list.xsd"> <Product ProductId="13956" provider="MySelf" name="Peugeot" type="106"> <ColorType productId="13956;19630" name="Black"> </ColorType> </Product> <Product ProductId="22568" provider="MySelf" name="Peugeot" type="406"> <ColorType productId="22568;24575" name="Red"> </ColorType> </Product> </CAR_list>
alors avec quelques « foreach », je récupere ce que je veux ..


Code : Tout sélectionner

$Product = $xml->xpath('//Product'); foreach ($xml as $Product) { echo $Product['ProductId']."<BR>"; echo $Product['name']."<BR>"; echo $Product['type']."<BR>"; foreach ($Product as $ColorType) { echo $ColorType['productId']."<BR>"; echo $ColorType['name']."<BR>"; } }
Mais comment faire face à la structure que je reçois ?
A cause notamment des « : » dans le tag de « Body » ou celui d’ « Envelop » je n’arrive pas a exprimer mon xpath.

Quelqu’un a-t-il une solution ??

Merci d’avance

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

04 août 2006, 14:11

Tu utilises SimpleXML ? Pourquoi ne pas te pencher sur les services web avec SOAP ?
http://www.zdnet.fr/builder/architectur ... 350,00.htm
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.