PHP rss聚合,利用PHP和AJAX创建RSS聚合器

本文介绍了如何使用AJAX技术从服务器获取RSS馈送,并解析馈送内容以显示标题、链接和图像。由于不同馈送结构的差异,解析过程需要进行条件检查。当找到图像标签时,需要调整后续标题和链接节点的索引来避免索引错误。同时,文章提到了一种按日期对馈送项进行分类的方法,以提高用户体验。showDetails方法用于在用户点击时显示详细信息。
摘要由CSDN通过智能技术生成

function sendRequest(){

if(checkReadyState(post)){

request = createRequestObject();

request.onreadystatechange = onResponse;

request.open("GET", post.responseText, true);

request.send(null);

}

}

由于RSS馈送之间的区别,分析响应具有一定的挑战性。一些含有包含标题和描述结点的图像,而其它则没有。因此,当我们分析回馈时,我们需要做一点检查来译解它是否包括一图像。如果它包括一图像,我们就可以,与该馈送的标题和链接一起,在image div标签中显示该图像:

var _logo = "";

var _title = response.getElementsByTagName('title')[0].firstChild.data;

var _link = response.getElementsByTagName('link')[0].firstChild.data;;

_logo += "<a href='" + _link + "' target='_blank'>" + _title + "</a><br/>";

if(checkForTag(response.getElementsByTagName('image')[0]))

{

var _url = response.getElementsByTagName('url')[0].firstChild.data;

_logo += "<img src='" + _url + "' border='0'><br/>"

}

document.getElementById('logo').innerHTML = _logo;

我们不仅必须检查每个图像以显示它,当遍历馈送中所有的项时我们还需要对之进行检查。因为如果存在一个图像,那么所有另外的标题和链接结点索引都将无法正常工作。因此,当发现图像标签时,我们应该通过在每一次遍历中增加索引值(+1)来调整标题和链接结点的索引:

if(checkForTag(response.getElementsByTagName('image')[0]) "" i>0){

var _title=response.getElementsByTagName('title')[i+1].firstChild.data;

var _link=response.getElementsByTagName('link')[i+1].firstChild.data;

}

else{

var _title =response.getElementsByTagName('title')[i].firstChild.data;

var _link = response.getElementsByTagName('link')[i].firstChild.data;

}

你可以使用checkForTag方法来检查是否存在特定的标签:

function checkForTag(tag){

if(tag != undefined) {

return true;

}

else{

return false;

}

}

if(i>1){

var previousPubDate = response.getElementsByTagName('pubDate')[i-1].firstChild.data;

}

if(pubDate != previousPubDate || previousPubDate == undefined){

_copy += "<div id='detail'>" + pubDate + "</div><hr align='left' width='90%'/>";

}

_copy += "<a href=\"JavaScript:showDetails('" + i + "');\">" + _title + "</a><br/><br/>";

document.getElementById('copy').innerHTML += _copy;

注意,上面的最后一部分是showDetails方法,它用于当一用户从一个馈送中选择一特定的项时进行细节显示。这个方法有一个参数(项索引值),这个索引用于发现在该馈送中details结点的索引:

function showDetails(index){

document.getElementById('details').innerHTML = response.getElementsByTagName('description')[index].firstChild.data;

}

结论

使用AJAX发送查询字符串到一个服务器端脚本并检索一个基于该串的定制响应,这对于任何Web开发者都有实现的可能。这样以来,你的下一个web应用程序也将会充满了新的可能性。存在许多种进行馈送分析的可能性。例如,你可以把项赋到类别上并使得该类别可折迭,这样用户就可以对其想观看的内容进行选择。作为一个示例,我使用日期来对项进行分类-这可以通过译解是否针对一个特定项的pubDate不同于前一个项的pubDate并且相应地显示一新的日期来实现:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值