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])
4

2 回答 2

1

尝试类似的东西

  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

于 2014-01-02T17:00:18.803 回答
1

当您通过 ajax 调用带有“xml”数据类型的 rss 提要时,您不需要使用 $.parseXml()。

$.ajax({
    url:'news.rss',
    dataType:'xml',
    success:function( xmlString ){
        var $xml = $( xmlDoc ),
        $title = $xml.find( "title" );

        $title.each(function(){
            console.log($(this).text());
        });
    }
});

请记住,RSS url 需要与 javascript 文件位于同一域中。如果不是,那么您将需要执行一些服务器端逻辑,例如 cURL,以获取 rss 提要。

于 2014-01-02T15:40:17.433 回答