2013-03-01 74 views
-2

我有這個叫做abc.php文件,這將返回一個有效的XML文檔,而不是顯示-string-標籤末和begginingPHP跨站點XML

header('Content-type: application/xml'); 
$xml = file_get_contents("http://www.xxx.asmx/test?id=1"); //External web service 
$xmlstr = simplexml_load_string($xml); 
echo $xmlstr; 

我想使用abc.php的有效的XML數據,提取一定的數據,將其存儲在我的數據庫,並定期檢查其他服務器的輸出,我已經試過這樣:

ob_start(); 
include 'abc.php'; 
$result = ob_get_clean() 

以及本:

$xml = file_get_contents("abc.php"); 
$xmlstr = simplexml_load_string($xml); 

沒有成功,有什麼建議嗎?

+1

你的代碼有什麼問題? – 2013-03-01 18:19:47

+0

這是abc.php [鏈接](http://sanjosecostarica.org/test/abc.php) 這是代碼$ result = file_get_contents('abc.php'); var_dump($ result),這是結果[link](http://sanjosecostarica.org/test/aaa.php);如果我使用本地xml,它將顯示正確的內容,但不是如果我打電話給php – 2013-03-01 18:31:13

+0

它似乎是返回有效的XML。我問你的代碼解析xml有什麼問題?你是要求我們告訴你如何解析它並將其放入數據庫中? – 2013-03-01 18:32:23

回答

0

確保你輸出了MIME類型,否則服務器會向它提供文本/ html,這將是錯誤的。把這個功能

header("Content-type: application/xml"); 

在abc.php所以客戶端將它識別爲XML。

0

file_get_contents("abc.php")將返回你的內容的文件 「abc.php」;它不會執行該PHP代碼。具有輸出緩衝技巧的include應該做大致正確的事情,但我不確定爲什麼你會這樣做,所以不值得弄清楚爲什麼失敗。

如果你能在abc.php訪問代碼,然後簡單地使之成爲一個PHP函數,該函數返回處理XML:

function get_the_actual_xml() 
{ 
    $xml = file_get_contents("http://www.xxx.asmx/test?id=1"); // External web service 
    $xml_obj = simplexml_load_string($xml); // Load into SimpleXML object 
    return (string)$xml_obj; // Convert contents back to a string 
} 

如果由於某種原因,你的兩個PHP文件需要在不同的服務器,您需要參考URLabc.php,而不僅僅是它在磁盤上的位置。這樣,PHP代碼將被執行,並且您將返回的是echo聲明的結果。如果您的服務器已啓用the allow_url_fopen setting,這是因爲$remotely_processed_content = file_get_contents('http://sanjosecostarica.org/test/abc.php')

0

在我couln't得到「abc.php」,但只有內容的結果結束簡單,我嘗試了不同的方法成功:

$xml = file_get_contents("http://www.xxx.asmx/test?id=1"); //External web service 
$xmlstr = simplexml_load_string($xml); 
$xmlok = <<<XML 
$xmlstr 
XML; 

$xml = simplexml_load_string($xmlok);