使用jQuery.parseXML

时间:2014-01-02 15:16:10

标签: jquery xml xml-parsing rss 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 Feed中获得的数据是:

  • 标题
  • 描述
  • 链接
  • 发布日期
  • 类别

我需要提取所有这些数据,因此我可以输出标题,描述,将两个包装在链接标记中,然后存储类别并使用存储的发布日期来随机输出(例如选择最近30天,输出这些项目是随机顺序的。)

以下是我使用Ajax页面编写的代码,但我不知道它是否正确或者应该如何工作....

jquery.ajax(http://www.sagittarius-digital.com/news.rss [, dataType xml])

2 个答案:

答案 0 :(得分:1)

当你通过数据类型为'xml'的ajax调用rss feed时,你不需要使用$ .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网址需要与javascript文件所在的域相同。如果没有,那么您需要执行一些服务器端逻辑(例如cURL)来获取RSS源。

答案 1 :(得分: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