url的php simplexml_load_file()返回错误

时间:2014-06-23 21:50:34

标签: php simplexml yql

我正在尝试使用Yahoos YQL语言通过xml访问数据 php和simplexml。我在网上找到了以下代码:

$xml = simplexml_load_file('
http://query.yahooapis.com/v1/public
/yql?q=select%20*%20from%20geo.places%20where%20text=%22sunnyvale,%20ca%22
');

我可以在浏览器中粘贴网址,然后返回xml就好了。

当我尝试通过我的php文件访问它时,我收到以下错误:

  

警告:simplexml_load_file():I / O警告:无法加载外部实体" http://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20geo.places%20其中%20text =%22sunnyvale,%20ca%22"在第11行的C:\ wamp \ www \ YQL Example \ index.php

任何帮助都将不胜感激。

达纳

2 个答案:

答案 0 :(得分:1)

您的URI字符串已损坏,其中包含换行符。

相反,将URI分配给变量,然后加载它。唯一的"技术"这样做的原因是为了更好地组织代码,因为字符串可以正确放置在函数调用中。但变量经常是你的朋友,所以请使用它们:

$uri = 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text=%22sunnyvale,%20ca%22';
$xml = simplexml_load_file($uri);

正常工作。

<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="9" yahoo:created="2014-06-23T22:16:26Z" yahoo:lang="en-US"><results>

...

</results></query>
<!-- total: 40 -->
<!-- engine4.yql.bf1.yahoo.com -->

答案 1 :(得分:0)

simplexml_load_file()将XML文件(磁盘上的文件或URL)获取到对象中。

使用file_get_contents()将Feed作为字符串获取,然后使用simplexml_load_string()