简单的 XML 加载文件不起作用
为什么这不起作用:
$url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20xpath%3D%22%2F%2Fmeta%22%20and%20url%3D%22http://www.cnn.com%22&format=xml&diagnostics=false";
$xml = (simplexml_load_file($url))
我收到多个错误,告诉我 HTTP 请求失败。最终我想将此文件的结果放入一个数组中,例如
描述 = CNN.com 提供最新的突发新闻等。
关键字 = CNN、CNN 新闻、CNN.com、CNN TV 等。
但这个初始阶段不起作用。有什么帮助吗?
编辑 附加信息:
错误:
warning: simplexml_load_file(http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20xpath%3D%22//meta%22%20and%20url%3D%22http://www.cnn.com%22&format=xml&diagnostics=false) [function.simplexml-load-file]: failed to open stream: HTTP request failed! # warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20xpath%3D%22//meta%22%20and%20url%3D%22http://www.cnn.com%22&format=xml&diagnostics=false"
- 来自我的 phpinfo(): allowed_url_fopen On
- PHP 版本 5.2.11
- 认为它有效 (http:// query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20xpath%3D%22//meta%22%20and%20url%3D%22http:// www.cnn.com%22&format=xml&diagnostics=false)
how come this isn't working:
$url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20xpath%3D%22%2F%2Fmeta%22%20and%20url%3D%22http://www.cnn.com%22&format=xml&diagnostics=false";
$xml = (simplexml_load_file($url))
I get multiple errors telling me the HTTP request failed. Ultimately I want to get the results from this file into an array eg
Description = CNN.com delivers the latest breaking news etc.
Keywords = CNN, CNN news, CNN.com, CNN TV etc.
But this initial stage isn't working. Any help please?
EDIT
Additional information:
Errors:
warning: simplexml_load_file(http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20xpath%3D%22//meta%22%20and%20url%3D%22http://www.cnn.com%22&format=xml&diagnostics=false) [function.simplexml-load-file]: failed to open stream: HTTP request failed! # warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20xpath%3D%22//meta%22%20and%20url%3D%22http://www.cnn.com%22&format=xml&diagnostics=false"
- From my phpinfo():
allow_url_fopen On On - PHP version 5.2.11
- Think it's valid (http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20xpath%3D%22//meta%22%20and%20url%3D%22http://www.cnn.com%22&format=xml&diagnostics=false)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
(注意:一旦找到真正的答案,答案可能就没用了...)
当您解决 XML 问题(继续解决它!)时,请知道您还可以以 JSON 形式获取 YQL 响应。这是一个快速示例:
给出一个类似的数组(屏幕上的文本被截断):
请注意 YQL 查询 (在控制台中尝试)与您的略有不同,以使 PHP 更简单。
(Note: Potentially useless answer once a real answer has been found…)
While you're figuring out the XML problem (keep working on it!) know that you can also get the YQL response back as JSON. Here's a quickie example:
Giving an array like (text truncated for the screen):
Note that the YQL query (try it in the console) is slightly different to yours, to make the PHP simpler.
嗯,XML 是GETable。至于有效,它缺少
,但我认为这不是必需的。
在我的本地服务器(PHP 5.3)上测试它,没有报告错误。我使用了你的源代码并且它有效。这是一个 print_r():
我建议您对 URL 进行编码,但这已经完成了。您可以尝试使用 cURL 执行查询。
Well, the XML is GETable. As for valid, it lacks
<?xml version="1.0"?>
, yet I think it's not required.Tested it on my local server (PHP 5.3), no errors reported. I've used your source code and it works. Here's a print_r():
I'd suggest you to encode the URL, but that's already done. You could try performing the query with cURL.