simpleXML, Récuperation d'informations

simpleXML, Récuperation d'informations - PHP - Programmation

Marsh Posté le 22-08-2005 à 12:39:41    

Bonjour,
 
Quelqu’un pourrait-il m’aider concernant la récupération d’information avec simpleXML.
Voici mon code :

Code :
  1. $Response = <<<XML
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <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">
  4. <soap:Body>
  5.  <SearchFlightsResponse xmlns="http://webservice.elsyarres.com/">
  6.    <SearchFlightsResult>
  7.     <inDeparture>N/REG/178/126</inDeparture>
  8.     <inDestination>N/CIT/178/1197</inDestination>
  9.     <outRequestId>N/COM/252/11#N/VIS/252/11</outRequestId>
  10.     <outFoundFlights>
  11.      <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
  12.       <FlightInformation xmlns="">
  13.        <FlightInfo diffgr:id="FlightInfo1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
  14.         <CarrierName>Aer Lingus</CarrierName>
  15.         <DepartureDate>19.08.2005</DepartureDate>
  16.         <DepartureTime>20:25</DepartureTime>
  17.         <ArrivalDate>19.08.2005</ArrivalDate>
  18.         <ArrivalTime> 21:00</ArrivalTime>
  19.        </FlightInfo>
  20.       <FlightInfo diffgr:id="FlightInfo2" msdata:rowOrder="1" diffgr:hasChanges="inserted">
  21.         <CarrierName>Alitalia</CarrierName>
  22.         <DepartureDate>25.08.2005</DepartureDate>
  23.         <DepartureTime>06:50</DepartureTime>
  24.         <ArrivalDate>25.08.2005</ArrivalDate>
  25.         <ArrivalTime> 09:35</ArrivalTime>
  26.        </FlightInfo>
  27.       </FlightInformation>
  28.      </diffgr:diffgram>
  29.     </outFoundFlights>
  30.    </SearchFlightsResult>
  31.  </SearchFlightsResponse>
  32. </soap:Body>
  33. </soap:Envelope>
  34. XML;
  35. $Response= simplexml_load_string($Response);
  36. var_dump ($Response);
  37. echo "<BR><BR>";
  38. echo "info1: ".$Response->Body->SearchFlightsResponse->SearchFlightsResult->inDeparture."<BR>"."<BR>"; 
  39. echo "info2: ".$Response->Body->SearchFlightsResponse->SearchFlightsResult->diffgram->FlightInformation->$FlightInfo[0]['FlightInfo1']->CarrierName;


Deux questions :  
1- si j’exécute mon petit test tel que, je n’affiche aucune info. Par contre, en remplaçant les balises <soap :Body> par <Body>, info1 s’affiche.  
Pourquoi ?,  
Comment faire pour ne pas avoir a traiter le fichier reçu en remplaçant cette information…
2- Je n’arrive pas a afficher l’info2. Je pense que cela est du au fait qu’elle est contenue dans un tableau… Quelqu’un a la solution ?
 
Merci pour vos réponses,

Reply

Marsh Posté le 22-08-2005 à 12:39:41   

Reply

Marsh Posté le 22-08-2005 à 17:10:52    

au cas où essaye en faisant $Response->soap:Body
 
sinon, tente un print_r $response pour voir s'il t'affiche pas la structure de l'objet response.
Je suis pas chez moi alors j'ai pas d'autres idées pour le moment.

Reply

Marsh Posté le 24-08-2005 à 15:34:58    

Bonjour,
 
Maintenant, j'arrive sans problème à récupérer certaines informations ( Ex: les infos existantes dans <FlightInfo>, tel que "CarrierName" ).  
 
En revanche, je ne trouve pas la solution pour afficher les infos contenues plus haut dans <SearchFlightsResult>.  
 
Quelqu'un aurait un tuyau?
 
Merci d'avance,
 
<?php  
$Response = <<<XML  
<?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">
<Body>
<SearchFlightsResponse xmlns="http://webservice.elsyarres.com/">
<SearchFlightsResult>
<inDeparture>N/REG/178/126</inDeparture>
<inDestination>N/CIT/178/1197</inDestination>
<outRequestId>N/COM/252/11#N/VIS/252/11</outRequestId>
<outFoundFlights>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<FlightInformation xmlns="">
<FlightInfo diffgr:id="FlightInfo1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<CarrierName>Aer Lingus</CarrierName>
<DepartureDate>19.08.2005</DepartureDate>
<DepartureTime>20:25</DepartureTime>
<ArrivalDate>19.08.2005</ArrivalDate>
<ArrivalTime> 21:00</ArrivalTime>
</FlightInfo>
<FlightInfo diffgr:id="FlightInfo2" msdata:rowOrder="1" diffgr:hasChanges="inserted">
<CarrierName>Alitalia</CarrierName>
<DepartureDate>25.08.2005</DepartureDate>
<DepartureTime>06:50</DepartureTime>
<ArrivalDate>25.08.2005</ArrivalDate>
<ArrivalTime> 09:35</ArrivalTime>
</FlightInfo>
</FlightInformation>
</diffgr:diffgram>
</outFoundFlights>
</SearchFlightsResult>
</SearchFlightsResponse>
</Body>
</soap:Envelope>
XML;
$Response= simplexml_load_string($Response);  
 
//var_dump ($Response);  
 
foreach ($Response->xpath('//FlightInfo') as $FlightInfo){
echo $FlightInfo->CarrierName."<BR>";
}
 
foreach ($Response->xpath('//SearchFlightsResult') as $SearchFlightsResult){
echo $SearchFlightsResult->outRequestId."<BR>";
}
 
?>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed