Миниотчёт. Вдруг кому пригодится...
Скрипт загружает через XMLHttpRequest файл XML (внутри RSS 2.0, кому надо под друие переделает) и преобразует XML в массив объектов JavaScript, согласно структуре XML файла.
rss.xml
CODE:
<?xml version="1.0" encoding="Windows-1251"?>
<rss version="2.0">
<channel>
<generator>My Hands</generator>
<pubDate>01 Jan 2006 00:20:07 +0300</pubDate>
<title>Новости KroBel.narod.ru</title>
<description>Новости и обновления на сайте KroBbel.narod.ru</description>
<link>http://10.2.1.21</link>
<copyright>Павел Аксютин</copyright>
<language>ru-ru</language>
<item>
<title>Теперь работает RSS</title>
<description>Теперь следить за новостями и обновлениями можно следить при помощи RSS канала...</description>
<pubDate>8 Jan 2006 11:35:05 +0300</pubDate>
<link>http://10.2.1.21/about/what_is_rss/</link>
</item>
<item>
<title>С Новым Годом!</title>
<description>Всего в новом 2006 году!</description>
<pubDate>1 Jan 2006 02:32:31 +0300 </pubDate>
<link>http://10.2.1.21</link>
</item>
</channel>
</rss>
Ссылки ясен пень пока не те...
Теперь самое интересное rss_reader.js
CODE:var req;
var output = new Array();
function loadXMLDoc(url) {
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = RssReader;
req.open("GET", url, true);
req.send(null);
} else if (window.ActiveXObject) {
//Для IE/WIN
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = RssReader;
req.open("GET", url, true);
req.send();
}
}
}
function RssReader() {
// only if req shows "complete"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
var i, j, oneRecord, oneObject
req = req.responseXML.documentElement
reqData = req.getElementsByTagName('channel')[0]
for ( i = 0; i < reqData.childNodes.length; i++) {
if ((reqData.childNodes[i].nodeType == 1) && (reqData.childNodes[i].tagName == "item")) {
// == "item", т.к. всё остальное лишнее...
oneRecord = reqData.childNodes[i];
oneObject = output[output.length] = new Object();
for (j = 0; j < oneRecord.childNodes.length; j++) {
if (oneRecord.childNodes[j].nodeType == 1) {
oneObject[oneRecord.childNodes[j].tagName] = oneRecord.childNodes[j].firstChild.nodeValue;
}
}
}
}
} else {
alert("Ошибка при загрузке данных XML:\n" + req.statusText);
}
}
/* Debug */
for (var k=0; k < output.length; k++) {
alert(output[k].title + "\n" + output[k].description)
}
/* End Debug */
}
А в самом HTML, соответственно подгружаем rss_reader.js и вызываем loadXMLDoc("/rss.xml"
В итоге получаем массив output объектов item со свойствами, названия которых соответствуют названию тегов title, description, link и pubDate, соответственно...
Если нужно получить title первой записи, соответственно output[0].title
P.S. Простите, что так много...