2013-10-07 31 views
0

我使用窗口使用Java腳本我可以將很多rss提要轉換爲單個JSON文件嗎?

我有幾個RSS源,就像8應用:

  1. http://dmadmin.dailymirror.lk/index.php?option=com_ninjarsssyndicator&feed_id=16&format=raw

  2. http://dmadmin.dailymirror.lk/index.php?option=com_ninjarsssyndicator&feed_id=17&format=raw

以下功能得到每個rss提供並轉換爲JSON對象但是我想要做的是獲取所有rss feed到一個JSON對象。 (有兩個RSS提要,因此函數調用後它給了我兩個獨立的JSON對象。但我想一個對象)

for (x = 0; x < listOfFeed.length; x++) { 
     //loop x start 
     feedburnerUrl = listOfFeed[x].url, 
      feedUrl = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&output=json&num=999&q=" + encodeURIComponent(feedburnerUrl); 

     WinJS.xhr({ 
      url: feedUrl, 
      responseType: "rss/json" 
     }).done(function complete(result) { //result = [object XMLHttpRequest] for the requested URLs                     
      var jsonData = JSON.parse(result.response); //jsonData = [object Object] create Object 
      var entries = jsonData.responseData.feed.entries; //entries = [object object][object object][object object]...... 

      entries.forEach(function (entry) { // process the entries...         

       console.log('{"title" :"' + entry.title + '","Date":"' + entry.publishedDate + '"},');       
      }); 
     }); 
    } //loop x finish 
} 
  1. listOfFeed =陣列的RSS網址。
  2. entries =完整JSON對象中的每個對象(一個URL內有25個項目)。
  3. jsonData =每個網址的JSON格式。所以我得到了兩個。但我想爲這兩個網址添加一個JSON對象。

感謝您的幫助......

回答

0

您可以使用Array.concat()加入條目陣列。您還可以跟蹤未完成的請求數,然後處理條目,當它到達0喜歡的東西:

var allEntries = []; 
var pendingRequestCount = listOfFeed.length; 

var onRequestFinished = function() { 
    pendingRequestCount--; 

    if (pendingRequestCount === 0) { 
    allEntries.forEach(function (entry) { // process the entries...         
     console.log('{"title" :"' + entry.title + '","Date":"' + entry.publishedDate + '"},');       
    }); 
    } 
}; 

for (x = 0; x < listOfFeed.length; x++) { 
    ... // Same as before 
    }).done(function complete(result) { 
    var jsonData = JSON.parse(result.response); 
    var entries = jsonData.responseData.feed.entries; 

    allEntries = allEntries.concat(entries); 

    onRequestFinished();   
    }); 
} //loop x finish 

你也應該處理失敗的請求,並調用onRequestFinished功能以及。

+0

非常感謝您的好意@nkron。一個問題。正如您之前所說的,我如何根據發佈日期對所有條目進行排序?在哪裏添加該方法..?我使用它添加到以前的地方。但它僅對每個Feed進行排序。 – SilentCoder

+0

實際上我可以對所有條目進行排序。然後我得到了我想要的結果。非常感謝@nkron。我是新來的這個領域,並希望你以後的幫助也..再次感謝你。 – SilentCoder

+0

@robi kumar,謝謝你編輯我的問題整齊地..非常感謝你 – SilentCoder

相關問題