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

0

Я пытаюсь создать агрегатор, который потянет элементы из 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])
  • 1
    вам нужно будет использовать запрос AJAX
  • 0
    @ArunPJohny спасибо, я посмотрю. Я просто не знаю, с чего начать и что делать в первую очередь.
Показать ещё 10 комментариев
Теги:
xml-parsing
rss
parsexml

2 ответа

1

Вам не нужно использовать $.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-канал.

  • 0
    Куда идет ссылка? Я не понимаю, куда должна идти ссылка.
  • 0
    Ваш javascript находится на сайте sagittarius-digital.com ?
Показать ещё 7 комментариев
0

Попробуйте что-нибудь вроде

  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)
    })
  })

Демо- версия: Plunker

Ещё вопросы

Сообщество Overcoder
Наверх
Меню