我正在尝试创建一个小应用程序,只需读取RSS源,然后在页面上布置信息。
我发现的所有说明都让这看起来过于简单,但由于某种原因它只是不起作用。我有以下
include_once(ABSPATH.WPINC.'/rss.php');
$feed = file_get_contents('http://feeds.bbci.co.uk/sport/0/football/rss.xml?edition=int');
$items = simplexml_load_file($feed);
就是这样,它随后在第三行中出现以下错误
Error: [2] simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "<?xml version="1.0" encoding="UTF-8"?> <?xm
The rest of the XML file is shown.
我在我的设置中打开了allow_url_fopen和allow_url_include但仍然没有。 我尝试了多个Feed,结果都是相同的结果?
我在这里生气了
答案 0 :(得分:32)
simplexml_load_file()
将 XML文件(磁盘上的文件或URL)解释为对象。你在$feed
中拥有的是一个字符串。
您有两种选择:
使用file_get_contents()
将XML Feed作为字符串获取,并使用e simplexml_load_string()
:
$feed = file_get_contents('...');
$items = simplexml_load_string($feed);
使用simplexml_load_file()
直接加载XML Feed:
$items = simplexml_load_file('...');
答案 1 :(得分:3)
如果您的服务器上未启用file_get_contents,您还可以使用cURL加载内容。
示例:
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://feeds.bbci.co.uk/sport/0/football/rss.xml?edition=int");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$output = curl_exec($ch);
curl_close($ch);
$items = simplexml_load_string($output);
答案 2 :(得分:1)
这也有效:
$url = "http://www.some-url";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xmlresponse = curl_exec($ch);
$xml=simplexml_load_string($xmlresponse);
然后我只运行一个forloop从节点中抓取东西。
像这样:“for($i = 0; $i < 20; $i++) {
$title = $xml->channel->item[$i]->title;
$link = $xml->channel->item[$i]->link;
$desc = $xml->channel->item[$i]->description;
$html .="<div><h3>$title</h3>$link<br />$desc</div><hr>";
}
echo $html;
***请注意,您的节点名称会有所不同,显然......并且您的HTML结构可能会有所不同......此外,您的循环可能会设置为更高或更低的结果量。
答案 3 :(得分:-1)
$url = 'http://legis.senado.leg.br/dadosabertos/materia/tramitando';
$xml = file_get_contents("xml->{$url}");
$xml = simplexml_load_file($url);