2012-08-09 133 views
0

我正在創建一個android應用程序,它從rss飼料提取信息...直到現在我可以成功解析一個rss飼料......並顯示我需要的任何東西。如何從一些現有的RSS飼料創建一個新的和過濾的rss飼料

我想分析多個RSS提要,並根據這些網站上給出的標籤進行過濾...大多數rss將是feedburner rss。

有沒有辦法對許多RSS提要結合篩選它基於標籤,關鍵字等.....並創建一個單一的RSS提要

public class BaseFeedParser { 
    static String feedUrlString = "http://feeds.dzone.com/dzone/frontpage"; 

     // names of the XML tags 
     static final String RSS = "rss"; 
     static final String CHANNEL = "channel"; 
     static final String ITEM = "item"; 

     static final String PUB_DATE = "pubDate"; 
     static final String DESCRIPTION = "description"; 
     static final String LINK = "link"; 
     static final String TITLE = "title"; 

     private final URL feedUrl; 

     protected BaseFeedParser(){ 
      try { 
       this.feedUrl = new URL(feedUrlString); 
      } catch (MalformedURLException e) { 
       throw new RuntimeException(e); 
      } 
     } 

     protected InputStream getInputStream() { 
      try { 
       return feedUrl.openConnection().getInputStream(); 
      } catch (IOException e) { 
       throw new RuntimeException(e); 
      } 
     } 

     public List<Message> parse() { 
      final Message currentMessage = new Message(); 
      RootElement root = new RootElement(RSS); 
      final List<Message> messages = new ArrayList<Message>(); 
      Element itemlist = root.getChild(CHANNEL); 
      Element item = itemlist.getChild(ITEM); 
      item.setEndElementListener(new EndElementListener(){ 
       public void end() { 
        messages.add(currentMessage.copy()); 
       } 
      }); 
      item.getChild(TITLE).setEndTextElementListener(new EndTextElementListener(){ 
       public void end(String body) { 
        currentMessage.setTitle(body); 
       } 
      }); 
      item.getChild(LINK).setEndTextElementListener(new EndTextElementListener(){ 
       public void end(String body) { 
        currentMessage.setLink(body); 
       } 
      }); 
      item.getChild(DESCRIPTION).setEndTextElementListener(new EndTextElementListener(){ 
       public void end(String body) { 
        currentMessage.setDescription(body); 
       } 
      }); 
      item.getChild(PUB_DATE).setEndTextElementListener(new EndTextElementListener(){ 
       public void end(String body) { 
        currentMessage.setDate(body); 
       } 
      }); 
      try { 
       Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler()); 
      } catch (Exception e) { 
       throw new RuntimeException(e); 
      } 
      return messages; 
     } 
    } 

回答

0

你可以做到這一點非編程方式使用Yahoo Pipes - 它允許您「管道」,過濾和彙總RSS數據到一個饋送中。