2015-05-27 2 views
0

Как получить значение внутри тега ответа на мыло в php. Ответ такой.Как пропустить реакцию мыла с запросом на завивание в php?

string '<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
<GetListResponse xmlns="http://test.org/"> 
<GetListResult>[{"Id":30,"Name":"OFFICE"},{"Id":31,"Name":"KUMAR KHATRI"},{"Id":32,"Name":"ASHA MAIYA SHRESTHA"},{"Id":33,"Name":"RABINDRA GHIMIRE"},{"Id":34,"Name":"CHABBI GHIMIRE"},{"Id":35,"Name":"RAJ KUMAR SHRESTHA"},{"Id":36,"Name":"RABINDRA BDH. RO'... (length=614) 

ответ

1

Чтобы получить значение GetListResult вы можете сделать так:

$source = <<<EOS 
<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
<GetListResponse xmlns="http://test.org/"> 
<GetListResult> 
[{"Id":30,"Name":"OFFICE"},{"Id":31,"Name":"KUMAR KHATRI"},{"Id":32,"Name":"ASHA MAIYA SHRESTHA"},{"Id":33,"Name":"RABINDRA GHIMIRE"},{"Id":34,"Name":"CHABBI GHIMIRE"},{"Id":35,"Name":"RAJ KUMAR SHRESTHA"}] 
</GetListResult> 
</GetListResponse> 
</soap:Body> 
</soap:Envelope> 
EOS; 

// Create simple XML element 
$xml = new SimpleXMLElement($source); 
$xml->registerXPathNamespace('test', 'http://test.org/'); 

// Get value of first "GetListResponse" element 
$result = (string)$xml->xpath('//test:GetListResult')[0]; 

// Parse JSON 
$values = json_decode($result, true); 
var_dump($values); 

Выход:

array(6) { 
    [0]=> 
    array(2) { 
    ["Id"]=> 
    int(30) 
    ["Name"]=> 
    string(6) "OFFICE" 
    } 
    [1]=> 
    array(2) { 
    ["Id"]=> 
    int(31) 
    ["Name"]=> 
    string(12) "KUMAR KHATRI" 
    } 
... 
} 

Существует также некоторые SOAP functionality integrated in PHP itself. Если бы вы могли использовать это, вы могли бы полностью удалить использование CURL + SimpleXMLElement. Что-то вроде этого (непроверено):

$soapClient = new SoapClient("http://test.org/wsdl?WSDL"); 
$soapResult = $soapClient->SomeFunction(array('foo'=>'bar', 'baz'=>'fez')); 
$result = $soapResult->GetListResponse->GetListResult; 
+0

Спасибо большое! Он работает нормально. –

Смежные вопросы