如何解析Android中的Rss Feed的描述

问题描述:

我正在开发一个android应用程序,它从Rss Feeds获取数据并将其显示在ListView中。 现在我设法成功解析了标题并将其显示在ListView中。问题是,当我点击ListView项目(即冠军),我需要加载的描述,但我不知道如何分析它,请帮助我..如何解析Android中的Rss Feed的描述

这是我的RSSItem页:

public class RssItem { 
// item title 
    private String title; 
    // item link 
    private String link; 
    private String description; 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getLink() { 
     return link; 
    } 

    public void setLink(String link) { 
     this.link = link; 
    } 

    @Override 
    public String toString() { 
     return title; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

}

这是我的Rssparse处理器页

public class RssParseHandler extends DefaultHandler { 

private List<RssItem> rssItems; 

// Used to reference item while parsing 
private RssItem currentItem; 

// Parsing title indicator 
private boolean parsingTitle; 
// Parsing link indicator 
private boolean parsingLink; 

public RssParseHandler() { 
    rssItems = new ArrayList<RssItem>(); 
} 

public List<RssItem> getItems() { 
    return rssItems; 
} 

@Override 
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { 
    if ("item".equals(qName)) { 
     currentItem = new RssItem(); 
    } else if ("title".equals(qName)) { 
     parsingTitle = true; 
    } else if ("link".equals(qName)) { 
     parsingLink = true; 
    } 

} 

@Override 
public void endElement(String uri, String localName, String qName) throws SAXException { 

    if ("item".equals(qName)) { 
     rssItems.add(currentItem); 
     currentItem = null; 
    } else if ("title".equals(qName)) { 
     parsingTitle = false; 
    } else if ("link".equals(qName)) { 
     parsingLink = false; 
    } else if ("description".equals(qName)) { 

    } 
} 

@Override 
public void characters(char[] ch, int start, int length) throws SAXException { 
    if (parsingTitle) { 
     if (currentItem != null) 
      currentItem.setTitle(new String(ch, start, length)); 
    } else if (parsingLink) { 
     if (currentItem != null) { 
      currentItem.setLink(new String(ch, start, length)); 
      parsingLink = false; 
     } 
    } 
} 

}

这个页面显示的项目被点击时的描述

public class Openpage extends Activity { 
WebView wb=null; 
String s1=null; 

@SuppressLint({ "SetJavaScriptEnabled", "HandlerLeak" }) 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.newsfeed); 
     Intent i=getIntent(); 
     s1=i.getStringExtra("link"); 

     wb=(WebView)findViewById(R.id.webView1); 
     wb.loadUrl(s1); 

wb.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) { 
     if(progress == 100){ 
     // Page has fully loaded. Cancel the progress dialog here 
     } 
    } 
    }); 
} 
class CustomWebViewClient extends WebViewClient { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) 
     { 
      //do whatever you want with the url that is clicked inside the webview. 
      //for example tell the webview to load that url. 
      view.loadUrl(s1); 
      //return true if this method handled the link event 
      //or false otherwise 
      return true; 
     } 
    } 

}

+0

与解析标题或链接有什么不同? – njzk2

,应该是很简单的,但你可以发布什么XML \ JSON您使用的是解析器?

本质上,您应该使用xml \ json解析器从feed中获取所有信息,feed本身可能是一个项目列表,因此使用解析器您将选择API来获取每个项目数据 - 实际上它没有不同获取Feed的标题和名称只是一个简单的纯文本。然后将每个列表视图项目实例化为一个提要类,并在单击该类时获取信息。

因为我已经这样做了,所以我可以在今天晚些时候发布我的github配置文件的完整工作代码。