使用JavaScript解析RSS订阅源

4
我正在使用PHP和JavaScript解析RSS订阅源。首先,我通过PHP创建了一个代理来获取RSS订阅源。然后使用JavaScript从这个RSS订阅源获取单独的数据。我的问题出在JavaScript上。如果我使用console.log(rssData);,就可以获取整个JavaScript文档而没有错误。但是,如果我尝试获取文档中的单独元素,例如:<title><description><pubDate>,并使用rssData.getElementsByName("title");,则会出现错误"Uncaught TypeError: Object....has no method 'getElementsByName'"。所以我的问题是如何获取RSS订阅源中的元素?
function httpGet(theUrl) {
    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", theUrl, false);
    xmlHttp.send(null);
    return xmlHttp.responseXML;
}

// rss source
var rssData = httpGet('http://website.com/rss.php');

// rss values
var allTitles = rssData.getElementsByTagName("title");    // title
var allDate = rssData.getElementsByTagName("pubDate");    // date

xmlHttp.responseText 是一个 StringString 没有 getElementsByName() 函数。你期望得到一个 XML 响应吗?尝试使用 xmlHttp.responseXML。此外,你可能会在使用 JS 时遇到跨域问题。你可以通过 AJAX 请求从 PHP 端获取数据源,并将其传递给自己的应用程序。 - Cᴏʀʏ
@Cory 感谢您的回复,是的 xmlHttp.responseXML 正是我所需要的。我还添加了所有访问的来源策略头。 - Daniel
1个回答

3
尝试将httpGet函数的最后一行改为:
return xmlHttp.responseXML;

毕竟,您希望得到一个XML响应。您可能还需要将以下行添加到PHP代理中:
header("Content-type: text/xml");

强制返回的内容以XML格式发送。


return xmlHttp.responseXML; 正是我所需要的,谢谢。 - Daniel
你能再帮我一个忙吗?我想循环遍历所有日期,只返回与今天当前日期匹配的标题。我已经更新了我的帖子。 - Daniel
那完全是另一个问题。 - Ashley Strout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接