如何解析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;
}
}
}
答
,应该是很简单的,但你可以发布什么XML \ JSON您使用的是解析器?
本质上,您应该使用xml \ json解析器从feed中获取所有信息,feed本身可能是一个项目列表,因此使用解析器您将选择API来获取每个项目数据 - 实际上它没有不同获取Feed的标题和名称只是一个简单的纯文本。然后将每个列表视图项目实例化为一个提要类,并在单击该类时获取信息。
因为我已经这样做了,所以我可以在今天晚些时候发布我的github配置文件的完整工作代码。
与解析标题或链接有什么不同? – njzk2