best-of-best.narod.ru   RSS

В начале html - кода файла RSS (расширение: *.xml) стоит: <?xml version="1.0" encoding="windows-1251"?> где кодировка "encoding" может быть другой.

Если файл в кодировке U T F - 8, то откройте этот файл с помощью блокнота, замените кодировку на windows-1252 (или просто выбросьте эту строчку) и сохраните его в тот же самый файл в кодировке ANSI, дальше работаем с этим файлом.

Перед началом работы с текстом следует произвести в нём замену (здесь x это html - код) x=x.replace(/<\!\[CDATA\[/g,'').replace (/\]\]>/g,'')>

Весь текст заключён внутри тега <rss version="2.0"></rss> Этот тег игнорируется браузером. Здесь и далее говоря "игнорируется браузером" имеется в виду, что любой текст заключённый внутри этого тега в html - коде будет отображаться браузером. Например: <tt>Это будет видно</tt> <title>Это не будет видно</title>.

Внутри предыдущего тега стоит тег <channel></channel> который игнорируется браузером. Этот тег является как бы аналогом тега "body".

Внутри предыдущего тега стоят теги <item></item> который игнорируется браузером. В каждом из этих тегов и находятся отдельные сообщения. Этот тег удобно заменить тегом "fieldset", который создаёт рамку вокруг сообщения. Замену можно осуществить так.

x=x.replace(/<item>/gi,'<fieldset>')
x=x.replace(/<\/item>/gi,'</fieldset>')
или так
x=x.replace(/item/gi,'fieldset')




Внутри предыдущего тега стоят теги "title", "link", "description", "category", "pubDate", и другие. Разберём их.

Тег <title></title> это заголовок сообщения, который браузером не отображается. Его удобно заменить на тег "strong". Тег "b" лучше не использовать, так как он более употребительный и если его описывать в стиле то стиль тега "b" будет и внутри сообщения. Перед закрывающим тегом следует поставить точку, так как в конце заголовка её не ставят!

x=x.replace(/<title>/gi,'<strong>')
x=x.replace(/<\/title>/gi,'.</strong>')

Тег <link></link> это тег ссылки на более подробную статью, описанную в этом сообщении. Тег игнорируется браузером. Его удобно заменить на тег "a". При этом текст самой ссылки удобно сделать "не читаемой", в виде нижней чёрточки.

x=x.replace(/<link>/gi,'<a href="')
x=x.replace(/<\/link>/gi,'">_</a>")

Тег <description></description> это тег самого сообщения. Тег игнорируется браузером. Его удобно заменить на тег "small".

x=x.replace(/<description>/gi,'<small>')
x=x.replace(/<\/description>/gi,'.</small>')

Тег <category></category> это тег, в котором указана категория, к которому относится сообщение. Этого тега, как и некоторых других, может не быть. Тег игнорируется браузером. При чтении речевыми синтезаторами этот тег нет необходимости читать, но при просмотре глазами он нужен, поэтому его удобно заменить на пустую картинку с атрибутом alt, в который записать содержимое этого тега.

x=x.replace(/<category>/gi,'<img src="" alt="')
x=x.replace(/<\/category>/gi,'">')

Тег <pubDate></pubDate> это тег, в котором указана дата создания сообщения в таком виде: Sun, 02 Jan 2011 18:55:54 +0300 Это время можно использовать для получения объекта с этой датой alert( new Date("Sun, 02 Jan 2011 18:55:54 +0300") ) Объект alert( new Date() ) даёт дату в таком виде: Sun Jan 2 18:55:54 UTC+0300 2011 Тег игнорируется браузером. Его удобно заменить, как и предыдущий на картинку.

x=x.replace(/<pubDate>/gi,'<img src="" alt="')
x=x.replace(/<\/pubDate>/gi,'">')

Тег <pubDateUT></pubDateUT> это тег, в котором указана та же дата создания сообщения, как и в предыдущем теге, но в таком виде: 1293983754 Если к этому числу приписать три нуля, то получим объект с этой датой alert( new Date(1293983754000) ) Тег игнорируется браузером. Его удобно заменить, как и предыдущий на картинку.

x=x.replace(/<pubDateUT>/gi,'<img src="" alt="')
x=x.replace(/<\/pubDateUT>/gi,'">')

Тег <dc:creator></dc:creator> это тег, в котором указано, кто создал это сообщение. Тег игнорируется браузером. Его удобно заменить на картинку.

x=x.replace(/<dc:creator>/gi,'<img src="" alt="')
x=x.replace(/<\/dc:creator>/gi,'">')

Тег <dc:subject></dc:subject> это тег, в котором указана тема сообщения. Тег игнорируется браузером. Его удобно заменить на картинку.

x=x.replace(/<dc:subject>/gi,'<img src="" alt="')
x=x.replace(/<\/dc:subject>/gi,'">')

Тег <guid></guid> это тег, в котором указана ссылка. Тег игнорируется браузером. Его удобно заменить на картинку. Так, как он имеет атрибуты, замена более сложная.

x=x.replace(/<guid>/gi,'<img src="" alt="')
x=x.replace(/<guid isPermaLink="false">/gi,'<img src="" alt="')
x=x.replace(/<guid isPermaLink="true">/gi,'<img src="" alt="')
x=x.replace(/<\/guid>/gi,'">')

В завершении нужно заменить &lt; и &gt; на < и > соответственно.

x=x.replace(/&lt;/gi,'<')
x=x.replace(/&gt;/gi,'>')

При выполнении перечисленных замен останется не распознанной информация, находящаяся до первого тега item, но она не очень ценная.




Если нужно не просто отобразить содержимое файла, а расположить его в нужном порядке, поступим следующим образом.

  1 Создадим переменную te_xt, массив "M" и массив M_x из кусков файла, нарезанного по item.

te_xt=''
var M=new Array()
M_x=x.split('<item>')

  2 Будем перебирать куски с первого до последнего (кусок с номером ноль пропускаем).

for(i=1; i<M_x.length; i++){//for
te_xt=ti_tle=li_nk=descrip_tion=categ_ory=pub_Date=''
}//for

  3 В каждом куске создаём переменную ti_tle, принимающую значение тега title (если он есть).

if(M_x[i].split('<title>').length>1){
ti_tle=M_x[i].split('<title>')[1].split('</title>')[0]}

  4 Получаем переменную li_nk.

if(M_x[i].split('<link>').length>1){
li_nk=M_x[i].split('<link>')[1].split('</link>')[0]}

  5 Получаем переменную descrip_tion.

if(M_x[i].split('<description>').length>1){
descrip_tion=M_x[i].split('<description>')[1].split('</description>')[0]
descrip_tion=descrip_tion.replace(/&lt;/gi,'<')
descrip_tion=descrip_tion.replace(/&gt;/gi,'>')}

  6 Получаем переменную categ_ory.

if(M_x[i].split('<category>').length>1){
categ_ory=M_x[i].split('<category>')[1].split('</category>')[0]}

  7 Получаем переменную pub_Date.

if(M_x[i].split('<pubDate>').length>1){
pub_Date=M_x[i].split('<pubDate>')[1].split('</pubDate>')[0]}

  8 Из pub_Date получаем две переменные da_ta1 и da_ta2.

ddd=new Date(pub_Date)
//
mo_nth=ddd.getMonth()+1
if(mo_nth<10){mo_nth='0'+mo_nth}
da_te=ddd.getDate()
if(da_te<10){da_te='0'+da_te}
hou_rs=ddd.getHours()
if(hou_rs<10){hou_rs='0'+hou_rs}
minu_tes=ddd.getMinutes()
if(minu_tes<10){minu_tes='0'+minu_tes}
//
da_ta1=mo_nth+''+da_te+''+hou_rs+''+minu_tes
//
da_ta2='Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота'.split(' ')[ddd.getDay()]+' '+ddd.getHours()+'-'+minu_tes+'.'
//
da_ta2=da_ta2.replace (/ 1\-/g,' час ')
da_ta2=da_ta2.replace (/-0/g,' ноль ')

  9 Набираем массив "M".

M[i]= categ_ory+' '+da_ta1+'@@@'
M[i]+='<img src="" alt="'+categ_ory+'">'
M[i]+='\r\n<br>'+da_ta2
M[i]+='\r\n<h3>'+ti_tle+'.</h3>'
M[i]+='\r\n'+descrip_tion

10 Сортируем его.

M=M.sort()

11 Набираем переменную te_xt.

for(i=0; i<M.length-1; i++){//for1
te_xt+=M[i].split('@@@')[1]+'<br><br><br>'
}//for1

24.1.2011 40.111



Используются технологии uCoz