上代码:

package com.android.rssreader;

import java.io.IOException;
import java.io.InputStream;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import android.app.Activity;
import android.os.Bundle;

public class RssReaderActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

private void ParseRss(int thd, InputStream in) throws IOException, XmlPullParserException {
String title = "";
String pubDate = "";
String link = "";
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(in, null); //null 为编码格式,如utf-8,null为所有的。
int eventType = xpp.getEventType();
String tag = xpp.getName();

//解析文件的头
while(eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_TAG) {
if(tag.equals("item")) {
return;
} else if(tag.equals("title")) {
xpp.next();
title = xpp.getText().toString();
} else if(tag.equals("pubDate")) {
xpp.next();
pubDate = xpp.getText().toString();
} else if(tag.equals("link")) {
xpp.next();
link = xpp.getText().toString();
}
} else if(eventType == XmlPullParser.END_TAG) {
if(tag.equals("link")) {
RssHead head = new RssHead(title, pubDate, link);
}
}
eventType = xpp.next();
}


//解析文件的Item项
String item_title = null;
String item_pubtime = null;
String item_link = null;
String description = null;
while(eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_TAG) {
if(tag.equals("item")) {
xpp.next();
item_title = item_pubtime = item_link = description = "";
} else if(tag.equals("title")) {
xpp.next();
item_title = xpp.getText().toString();
} else if(tag.equals("link")) {
xpp.next();
item_link = xpp.getText().toString();
} else if(tag.equals("pubTime")) {
xpp.next();
item_pubtime = xpp.getText().toString();
} else if(tag.equals("description")) {
xpp.next();
description = xpp.getText().toString();
}
} else if(eventType == XmlPullParser.END_TAG) {
if(tag.equals("item")) {
RssItem ri = new RssItem(item_title,item_pubtime,item_link,description);
}
}
}


//以上的解析方法是针对双标签,例如<title>title</title>
//下面的解析方法是针对的单标签,例如:<title href="www.google.cn"/>
//这里我只写出大体的过程,具体自己琢磨了。

while(eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_TAG) {
if(tag.equals("title")) {
//注意,这里不能用next()了,循环完了在用。
for(int i=0; i<xpp.getAttributeCount(); i++) {
if(xpp.getAttributeName(i).equals("href")) {
String link2 = xpp.getAttributeValue(i);
break;
}
}
xpp.next();
}
}
}

}
}

下面的是RssItem.java和RssHead.java, 写的很粗糙。

package com.android.rssreader;

public class RssHead {

private String title;
private String pubDate;
private String link;

public RssHead(String title, String pubDate, String link) {
// TODO Auto-generated constructor stub
this.link = link;
this.pubDate = pubDate;
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPubDate() {
return pubDate;
}
public void setPubDate(String pubDate) {
this.pubDate = pubDate;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
}

package com.android.rssreader;

public class RssItem {

private String item_title;
private String item_pubDate;
private String item_link;
private String description;

public RssItem(String title, String putDate, String link, String description) {
// TODO Auto-generated constructor stub
item_title = title;
item_pubDate = putDate;
item_link = link;
this.description = description;
}
public String getItem_title() {
return item_title;
}
public void setItem_title(String item_title) {
this.item_title = item_title;
}
public String getItem_pubDate() {
return item_pubDate;
}
public void setItem_pubDate(String item_pubDate) {
this.item_pubDate = item_pubDate;
}
public String getItem_link() {
return item_link;
}
public void setItem_link(String item_link) {
this.item_link = item_link;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}

还有,InputString 应该从Connection中拿到,还应该写一个获取连接的方法,今天太晚了,明天继续吧。

更多相关文章

  1. android下载文件保存到sd卡
  2. AndroidManifest.xml文件详解(uses-configuration)
  3. Android对应用程序的资源文件xml解析的源代码在哪里
  4. Android调用系统的发邮件方法
  5. Android轮播图Banner使用方法
  6. Android获取SD卡视频音频文件
  7. 【Android】debug 状态下其签名文件 debug.keystore 相关(如何获
  8. Android ButterKnife框架的使用方法

随机推荐

  1. android studio生成JKS时候提示:JKS 密钥
  2. android扫描二维码(zxing)附带小例子
  3. Android上实现柱状图表
  4. Android(安卓)OpenGLES2.0(十三)——流畅的
  5. android gravity用法,我老是记不住
  6. 从零开始--系统深入学习android(实践-让我
  7. 包建强的培训课程(9):Android App性能优化
  8. Android(安卓)进阶之了解源码——Activit
  9. Android通过WebView与JS交互的全面方式
  10. Android构建系统和Gradle知识整理