Использование jQuery.parseXML

Я пытаюсь создать агрегатор, который будет извлекать элементы из 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])

2 ответа

Вам не нужно использовать $.parseXml() при вызове канала rss через ajax с dataType '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)
    })
  })

Демо: Плункер

Другие вопросы по тегам