如何循环并从xml转换为json的数据?

时间:2015-05-19 18:23:25

标签: jquery json xml

我已将xml转换为json并希望使用循环过程获取一些数据。实际上,我想在标题,描述和链接方面获取数据,但我在这里堆积并给出错误。

$(function(){
      url = 'http://www.straitstimes.com/news/sport/rss.xml';
      $.ajax({
      type: "GET",
      url: 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=1000&callback=?&q=' + encodeURIComponent(url),
      dataType: 'json',
      error: function(){
          alert('Unable to load feed, Incorrect path or invalid feed');
      },
      success: function(xml){

        html='';
              console.log(xml.responseData.feed.entries); 

              for (var i = 0; i < xml.responseData.feed.entries .length; i++){
               html+=  xml.responseData.feed.entries[i].title+'<br/>'+
               html+=  xml.responseData.feed.entries[i].description+'<br/>'+
               html+=  xml.responseData.feed.entries[i].link+'<br/>';
           }
           $('#feedContainer').html(html);

        }
    });
});

2 个答案:

答案 0 :(得分:2)

使用+ =构造函数时,您将添加到已定义的变量中。因此,您不需要行末尾的+,您需要结束语句。所以

 html+=  xml.responseData.feed.entries[i].title+'<br/>'+
 html+=  xml.responseData.feed.entries[i].description+'<br/>'+
 html+=  xml.responseData.feed.entries[i].link+'<br/>';

应该是

html+=  xml.responseData.feed.entries[i].title+'<br/>';
html+=  xml.responseData.feed.entries[i].description+'<br/>;
html+=  xml.responseData.feed.entries[i].link+'<br/>';

 html =  xml.responseData.feed.entries[i].title+'<br/>'+
 xml.responseData.feed.entries[i].description+'<br/>'+
 xml.responseData.feed.entries[i].link+'<br/>';

答案 1 :(得分:1)

这是正确的代码JSFiddle

您在html + =行上的语法有些问题。 (+不正确)。

我为自己分离了url声明(只是为了确保没有问题)。

 $(function(){
   var url1 = 'http://www.straitstimes.com/news/sport/rss.xml';
   var url2 = 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=1000&callback=?&q=' + encodeURIComponent(url1);
  $.ajax({
  type: "GET",
  url:  url2,
  dataType: 'json',
  error: function(){
      alert('Unable to load feed, Incorrect path or invalid feed');
  },
  success: function(xml){

    html='';
          console.log(xml.responseData.feed.entries); 

          for (var i = 0; i < xml.responseData.feed.entries.length; i++) {
              console.log(xml.responseData.feed.entries[i].title);
          html +=  xml.responseData.feed.entries[i].title+'<br/>';
          html +=  xml.responseData.feed.entries[i].description+'<br/>';
          html +=  xml.responseData.feed.entries[i].link+'<br/>';
       }
       $('#feedContainer').html(html);

    }
  });
});