2014-02-28 2 views
0

SOAP을 사용하여 웹 서비스를 시작했습니다.PHP에서 SOAP 응답을 파싱하는 방법은 무엇입니까?

아래 코드를 사용하여 응답을 얻습니다.

$response = $objClient->__getLastResponse(); 

내 반응은 다음과 같습니다

<?xml version="1.0" encoding="UTF-8"?> 
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <soapenv:Body> 
     <ns1:getHotelValuedAvail xsi:type="xsd:string" xmlns:ns1="http://axis.frontend.hydra.hotelbeds.com"> 
      <HotelValuedAvailRS xmlns="http://www.hotelbeds.com/schemas/2005/06/messages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" timeToExpiration="1771163" totalItems="387" echoToken="DummyEchoToken"> 
       <PaginationData currentPage="1" totalPages="387"/> 
       <ServiceHotel xsi:type="ServiceHotel" availToken="ngQXOz+UOoLDtPieFMhu9wdw"> 
        <DateFrom date="20130709"/> 
        <DateTo date="20130711"/> 
        <Currency code="EUR">Euro</Currency> 
        <HotelInfo xsi:type="ProductHotel"> 
         <Code>99361</Code> 
         <Name>Hilton Sa Torre Mallorca Resort</Name> 
         <Position latitude="39.42761529999999936535" longitude="2.75602390000000019299"/> 
        </HotelInfo> 
       </ServiceHotel> 
      </HotelValuedAvailRS> 
     </ns1:getHotelValuedAvail> 
     </soapenv:Body> 
    </soapenv:Envelope> 

어떤 사람은 이름 요소의 값을 얻기 위해 나를 도와 드릴까요? simplexml_load_string($response)X-Path("/Name")을 시도했지만 알 수 없습니다.

답변

0

당신은 DOMDocument::getElementsByTagName를 사용하여 시도 할 수 있습니다 :

당신은 다음과 같이 시도 할 수 있습니다 :

$response = $objClient->__getLastResponse(); 
$doc = new DOMDocument(); 
$doc->loadXML($response); 
$names= $doc->getElementsByTagName("Name"); 
$name = $names->item(0)->nodeValue; 
var_export($name); 
+0

을 그것은 null 값을 반환합니다. 하지만 내가 var_dump ($ doc); Chrome의 Insplect 요소에서 노드를 볼 수 있습니다. [테스트 사이트는 여기에 있습니다.] –

+0

나는 $ response 대신 $$ response = file_get_contents ("soap.xml"); 파일을 통해 XML을 파싱했습니다. = $ objClient -> __ getLastResponse();'. 'Name' 요소를 파싱합니다. –

관련 문제