2011-08-22 69 views
0

我得到了一個SOAP(正常的PHP客戶端)結果 從我的請求 我想將結果保存爲XML文件?但是如何?Php Soap,轉儲結果爲XMl FILE?

$result = $client->__soapCall('MYwebServices',array($params)); 

    $xml = simplexml_load_string($result); 

    $fp = fopen("out.xml","w"); 
    fwrite($fp,$xml); 
    fclose($fp); 

回答

2

如果要獲取Web服務返回的XML,則應使用SoapClient::__getLastResponse()(以及trace選項)。

$client = new SoapClient(..., array('trace' => 1)); 

// Do your __soapCall here 

$xml = $client->__getLastResponse(); 

// Work with the XML string here 
+0

YES :)謝謝!很簡單 !! – koos

0

請問上面的代碼不這樣做,如果不嘗試:

$result = $client->__soapCall('MYwebServices',array($params)); 

    $xml = new DOMDocument(); 
$xml->load($result); 
$xml->save("out.xml"); 

這可能被打破,如果回報率不是XML或XML格式不正確,在這種情況下,試試這個:

$result = $client->__soapCall('MYwebServices',array($params)); 
    libxml_use_internal_errors(true);//load if improperly formatted 
     $xml = new DOMDocument(); 
    if ($xml->load($result)) 
    { 
     $xml->save("out.xml"); 
    } 
    else { 
     echo "The return data was not xml"; 
    } 
+0

可能是壞的XML是的,謝謝:) – koos

1
$xml->asXML("out.xml"); 

SimpleXMLElement::asXML reference

+0

確認上述不起作用?可能是我得到了幾個命名空間的結果? – koos

+0

對不起,不明白。如果SOAP請求成功,則可能需要chec:'is_soap_fault($ result)'。這是關於[is_soap_fault]的手冊(http://www.php.net/manual/ru/function.is-soap-fault.php) – J0HN