使用javascript解析rss订阅源

问题描述:

我使用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源中的元素?使用javascript解析rss订阅源

使用Javascript(更新)

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 
+0

'xmlHttp.responseText'是一个'String'。 'String's没有'getElementsByName()'函数。你期待XML响应吗?请改用'xmlHttp.responseXML'。此外,您可能会遇到跨域问题与JS做这个。您可能希望通过对您自己的应用程序的AJAX请求获取PHP端的提要。 –

+0

@Cory感谢您的回复,是的'xmlHttp.responseXML'正是我一直在寻找的。我还将来源策略标题添加到所有访问。 –

试着改变httpGet函数的最后一行:

return xmlHttp.responseXML; 

毕竟,你期待一个XML响应返回。您可能还需要将此行添加到您的PHP代理中:

header("Content-type: text/xml"); 

强制将返回内容作为XML发送。

+0

'return xmlHttp.responseXML;'正是我需要的,谢谢。 –

+0

你能帮我多做一件事吗?我想遍历所有的日期,只返回匹配当前日期的标题。我更新了我的帖子。 –

+0

这完全是另一个问题。 –