我正在尝试使用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
任何帮助都将不胜感激。
达纳
答案 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()
。