2013-03-01 72 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);