Я пытаюсь создать агрегатор, который потянет элементы из RSS-канала и сохранит их в массиве jQuery (чтобы я мог циклически перемещаться по массиву и случайным образом выводить).
Я нашел некоторую информацию об использовании jQuery.parseXML
для этого, однако демонстрационное обеспечение, которое я не могу понять, поскольку у меня мало знаний в этой области, и демонстрация не показывает нигде, где добавляется ссылка на RSS-канал?
<p id="someElement"></p>
<p id="anotherElement"></p>
<script>
var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>",
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$title = $xml.find( "title" );
// Append "RSS Title" to #someElement
$( "#someElement" ).append( $title.text() );
// Change the title to "XML Title"
$title.text( "XML Title" );
// Append "XML Title" to #anotherElement
$( "#anotherElement" ).append( $title.text() );
</script>
Где я могу добавить ссылку на RSS-канал? А где массив?
В конечном итоге это будет мозаичная стена со всеми элементами, визуально отображаемыми в HTML.
Данные из RSS-канала для каждого элемента:
Мне нужно собрать все эти данные, чтобы я мог выводить заголовок, описание, обертывать два в теге ссылки, а затем сохранять категорию и использовать сохраненную дату публикации для случайного вывода (например, выбрать последние 30 дней и вывести эти элементы в случайный порядок).
Вот код, который я написал, используя страницу Ajax, но я не знаю, правильно ли это или что нужно делать...
jquery.ajax(http://www.sagittarius-digital.com/news.rss [, dataType xml])
Вам не нужно использовать $.parseXml(), когда вы вызываете rss-канал через ajax с типом данных 'xml'.
$.ajax({
url:'news.rss',
dataType:'xml',
success:function( xmlString ){
var $xml = $( xmlDoc ),
$title = $xml.find( "title" );
$title.each(function(){
console.log($(this).text());
});
}
});
Помните, что URL-адрес RSS должен находиться в том же домене, в котором находится файл javascript. Если нет, вам нужно будет сделать некоторую серверную логику, например, cURL, чтобы получить rss-канал.
Попробуйте что-нибудь вроде
jQuery(function(){
$.ajax({
url: 'news.rss', //place the your rss feed url here
dataType: 'xml'
}).done(function(xml){
var items = $(xml).find('item').map(function(){
var $item = $(this);
var array = ['<li>'];
array.push('<a href="' + $.trim($item.find('link').text()) + '">')
array.push('<h3>' + $item.find('title').text() + '</h3>')
array.push('</a>');
array.push('<p>' + $item.find('description').text() + '</p>');
array.push('<span class="category">' + $item.find('category').text() + '</span>')
array.push('<span class="pub-date">' + $item.find('pubDate').text() + '</span>')
array.push('</li>');
return array
}).get();
$('ul').append(items.join(' '));
}).fail(function(){
conole.log('error', arguments)
})
})