یک RSS Reader برای خواندن RSS ها استفاده می شود. این مثال یک RSS خوان را نمایش می دهد، که RSS-feed به یک صفحه وب بدون بارگذاری مجدد نمایش داده می شود.
طراحی صفحه وب خبرخوان
هنگامی که کاربر یک RSS-feed را در لیست کشویی انتخاب می کند، یک تابع به نام “showRSS ()” اجرا می شود. این تابع توسط رویداد “onchange” فعال می شود:
<html>
<head>
<script>
function showRSS(str) {
if (str.length==0) {
document.getElementById("rssOutput").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
document.getElementById("rssOutput").innerHTML=this.responseText;
}
}
xmlhttp.open("GET","getrss.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<select onchange=”showRSS(this.value)”>
<option value=””>Select an RSS-feed:</option>
<option value=”Google”>Google News</option>
<option value=”NBC”>NBC News</option>
</select>
</form>
<br>
<div id=”rssOutput”>RSS-feed will be listed here…</div>
</body>
</html>
تابع showRSS عملیات زیر را انجام می دهد:
- بررسی می کند که آیا یک خوراک RSS انتخاب شده است؟
- یک شیء XMLHttpRequest ایجاد می کند.
- تابعی تعیین می کند که هنگامی که پاسخ سرور آماده است،اجرا شود.
- درخواست را به یک فایل در سرور ارسال می کند.
توجه داشته باشید که پارامتر (q) به URL اضافه می شود (با محتوای لیست کشویی)
صفحه پی اج پی خبرخوان
صفحه سرور تحت نام جاوا اسکریپت یک فایل پی اچ پی با نام getrss.php است.
<?php
//get the q parameter from URL
$q=$_GET["q"];
//find out which feed was selected
if($q=="Google") {
$xml=("http://news.google.com/news?ned=us&topic=h&output=rss");
} elseif($q=="NBC") {
$xml=("http://rss.msnbc.msn.com/id/3032091/device/rss/rss.xml");
}
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
//get elements from "<channel>"
$channel=$xmlDoc->getElementsByTagName('channel')->item(0);
$channel_title = $channel->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$channel_link = $channel->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$channel_desc = $channel->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
//output elements from "<channel>"
echo("<p><a href='" . $channel_link
. "'>" . $channel_title . "</a>");
echo("<br>");
echo($channel_desc . "</p>");
//get and output "<item>" elements
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=2; $i++) {
$item_title=$x->item($i)->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$item_desc=$x->item($i)->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
echo ("<p><a href='" . $item_link
. "'>" . $item_title . "</a>");
echo ("<br>");
echo ($item_desc . "</p>");
}
?>
هنگامی که یک درخواست برای خوراک RSS از جاوا اسکریپت ارسال می شود، موارد زیر انجام می شود:
- بررسی می کند کدام خوراک انتخاب شود.
- یک شی جدید XML DOM ایجاد می کند.
- اسناد RSS را در متغیر xml بارگذاری می کند.
- عناصر را از یک عنصر کانال استخراج کرده و به خروجی می فرستد.
- عناصر را از یک عنصر آیتم استخراج کرده و به خروجی می فرستد.