使用DOMDocument加载RSS文件 [英] Loading RSS file with DOMDocument

查看:129
本文介绍了使用DOMDocument加载RSS文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在学校的PHP作业中遇到问题。我必须创建一个PHP脚本,将一堆XML文件读取到不同的RSS源。我使用DOMDocument从这个XML文件中检索一个URL,并使用RSS feed加载一个新的DOM。我将url节点值分配给$ url,然后使用$ url为RSS feed创建一个新的DOM对象。

  $ url = $ student-> getElementsByTagName(url); 
$ url = $ url-> item(0) - > nodeValue;


$ rss = new DOMDocument();
$ rss-> load($ url);

当我使用上面的代码时,RSS文件将不会加载。我甚至回应$ url,以确保它有一个分配给它的链接。但是,如果我把实际的url放到load()中,它工作得很好。为什么$ url在load()中工作?

解决方案

可以使用 simplexml_load_file 在这种情况下,但请记住,所有这些操作是昂贵的(时间限制,内存等)。

  $ rssStack = array(); 
$ xml = simplexml_load_file(http://people.rit.edu/cns3946/539/project2/rss_class.xml);
foreach($ xml-> student as $ student){
//需要清理$ url
$ url = trim((string)$ student-> url);
//抑制错误,一些urls返回404 Not Found
$ rss = @ simplexml_load_file($ url);
$ rssStack [] = $ rss;
//也可以使用
// $ rss = new DOMDocument();
// $ rss-> load($ url);
// $ rssStack [] = $ rss;
}
print_r($ rssStack);

更新

  $ rssStack = array(); 
$ xml = new DOMDocument();
$ xml-> load(http://people.rit.edu/cns3946/539/project2/rss_class.xml);
foreach($ xml-> getElementsByTagName(url)as $ url){
//你需要清理url
$ url = trim($ url-> nodeValue);
$ rss = new DOMDocument();
$ rss-> load($ url);
$ rssStack [] = $ rss;
// break;
}
print_r($ rssStack);


I'm having an issue with my PHP assignment for school. I have to create a PHP script that reads an XML file with bunch of URLs to different RSS feeds. I'm using DOMDocument to retrieve an URL from this XML file and load a new DOM with the RSS feed. I assign the "url" node value to $url and then create a new DOM object for the RSS feed using $url.

$url = $student->getElementsByTagName("url");
$url = $url->item(0)->nodeValue;


$rss = new DOMDocument();
$rss->load($url);

The RSS file will not load when I use the code above. I even echoed $url to make sure that it has a link assigned to it. However, if I put the actual url into the load(), it works just fine. Why isn't $url working in load()?

解决方案

You can use simplexml_load_file in this case, but remember, all these operations are costly (time limit, memory etc..).

$rssStack = array();
$xml = simplexml_load_file("http://people.rit.edu/cns3946/539/project2/rss_class.xml");
foreach ($xml->student as $student) {
    // need sanitize $url
    $url = trim((string) $student->url);
    // suppress errors, cos some urls return "404 Not Found"
    $rss =@ simplexml_load_file($url);
    $rssStack[] = $rss;
    // also can use 
    // $rss = new DOMDocument();
    // $rss->load($url);
    // $rssStack[] = $rss;
}
print_r($rssStack);

UPDATE

$rssStack = array();
$xml = new DOMDocument();
$xml->load("http://people.rit.edu/cns3946/539/project2/rss_class.xml");
foreach ($xml->getElementsByTagName("url") as $url) {
    // you need to sanitize url
    $url = trim($url->nodeValue);
    $rss = new DOMDocument();
    $rss->load($url);
    $rssStack[] = $rss;
    // break;
}
print_r($rssStack);

这篇关于使用DOMDocument加载RSS文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆