【问题标题】:php simplexml_load_file() of url returns errorurl 的 php simplexml_load_file() 返回错误
【发布时间】:2014-06-23 21:50:33
【问题描述】:

我正在尝试使用 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
');

我可以将url粘贴到浏览器中,它返回xml就好了。

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

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

任何帮助将不胜感激。

达娜

【问题讨论】:

  • 这说明了什么? $data = file_get_contents('http://query.yahooapis.com/v1/public /yql?q=select%20*%20from%20geo.places%20where%20text=%22sunnyvale,%20ca%22); var_dump($data);

标签: php simplexml yql


【解决方案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 -->

【讨论】:

    【解决方案2】:

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

    使用file_get_contents() 以字符串形式获取提要,然后使用simplexml_load_string()

    【讨论】:

    • 内部simplexml_load_file() 已经这样做了。它使用与file_get_contents()(PHP Streams 包括PHP stream wrapper for HTTP)相同的内部机制。
    猜你喜欢
    • 2012-07-05
    • 1970-01-01
    • 2011-05-16
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多