Bonjour,
Jai un souci pour extraire les données dun 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 :
- <?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 :
- <?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 :
- $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 narrive pas a exprimer mon xpath.
Quelquun a-t-il une solution ??
Merci davance