2012-05-20 64 views
0

所以我正在使用curl和POST方法,將信息傳送到服務器,然後在XML.I的形式從該服務器取回信息的PHP腳本,然後想借此信息並將其解析爲用戶可讀的格式。捲曲和ヶ輛剝離XML標籤

我使用捲曲抓住信息,並將其加載到一個變量($結果),然後我要加載到的SimpleXML和存儲在變量$ routeinfo。但是,當我執行var_dump($ routeinfo)時,看起來並沒有存儲任何數據。我已經通過迴應確認$ result中存在數據。

我也想通這可能是由於XML沒有顯示在瀏覽器的時候我呼應$結果(但它的存在,如果我檢查源)。只是爲了檢查,雖然我使用了htmlentities,但是會導致很多錯誤,因爲<被解釋爲與html等效。無論如何,我已經達成了一個共識,並且已經記錄了幾個小時來實施不同的建議而無濟於事。我的代碼如下,我將不勝感激任何可以呈現的幫助。

<?php 
//retrieve form data in a variable 
$input = $_POST['stopNo'] ; 

//declare other variables needed 
$api_key = 'xxxkey' ; 
$api_id = 12345 ; 
$url = 'url to send data to' ; 
$querystring = "appID=". $api_id . "&apiKey=" . $api_key . "&stopNo" . $input ; 
$data = urlencode($url) ; 


//curl using 

$ch = curl_init() ; 

//set up curl 

curl_setopt($ch, CURLOPT_URL, 'urlsendingdatato'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'appID='.urlencode($api_id).'&apiKey=' .urlencode($api_key) . '&stopNo=' .urlencode($input)); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0) ; 
curl_setopt($ch, CURLOPT_ENCODING, "UTF-8") ; 
curl_setopt($ch, CURLOPT_BINARYTRANSFER , TRUE) ; 


//execute and gather info 
$result = curl_exec($ch) ; 

//close connection 
curl_close($ch) ; 

//format data 
//ent at the moment serves no purpose doesn't render the information correctly 
$ent = htmlentities($result); 
$routeinfo = new SimpleXMLElement($result) ; 

//print data 
echo "<br> $result <br>" ; 
var_dump($routeinfo) ; 


?> 
+0

現在我試着再次直接從捲曲(所以$結果)將數據加載到simplexml_load_string($結果)另一件事然而,當我做了dump_var或print_r的上,它只是顯示一個空數組。但是,自己回顯$結果表明存在數據。 –

回答

0

看來,這個問題是在simpleXML對象創建時出現的。 所以你可以嘗試用定義好的XML文件創建一個新的simpleXMLElement對象。如果這意味着獲取的xml文件的格式不正確。

$xml="<?xml version='1.0'?><book><author>steve</author><price>200</price><name>Its my life</name></book>"; 
$test= new SimpleXMLElement($xml); 
var_dump($test); 

這適用於我!

但是,如果存在xml解析問題,simpleXMLElement會拋出一個error。它是否會在你的情況下返回任何錯誤?或者您可能已關閉錯誤報告(error_reporting(0);)。

+0

可愛的這是非常有用的,讓我意識到這不是我的代碼..有點。 XML也在SOAP請求等中發送它。所以我必須使用命名空間來清理XML作爲本文中引用 http://stackoverflow.com/q/740730/1405575 –

+0

大...讓我知道,如果有任何其他問題:) –