使用DOMDocument加载RSS文件

时间:2013-02-02 06:03:26

标签: php xml dom rss domdocument

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

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


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

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

1 个答案:

答案 0 :(得分:0)

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

$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);

<强>更新

$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);