今天由于公司项目需要接触了读取RSS的知识。
先介绍一下项目需求——给定RSS的链接,要求只读取出其中的6条带链接的title。
到网上一搜,全是关于ROME来读取RSS的例子。开始我也选用了REMO来实现,结果发现显示速度那是相当的慢啊。于是开始研究自己写xml的解析。选用了SAX,关于为什么选取SAX而不选择DOME,网上说明一大堆,此处不再赘述。
1、建立RssReader类extends DefaultHandler。
覆盖startDocument(),endDocument(),startElement(),endElement(),characters()四个方法。
startDocument():当xml文档开始解析时调用。
endDocument():当xml文档解析完毕时调用。
startElement():当解析遇到标签时执行,如<title><name>等。
endElement():当遇到结束标签时执行,如</title></name>等。
characters():从当前正在解析的element中解析出数据。
由于只需要获得前6条数据,因此只需要在解析到6条记录后便停止。
2、类中定义如下变量:
private int maximumResults =6;//解析的数据条数,可通过传参动态改变
private static final int MAX_ELEMENTS = 500;//在停止之前可以允许的最大解析条数,即在element中碰到</...>之前深入的层数
private int ecount = 0;//记录当前深入的层数 。
private int rcount =0;//记录当前已经得到的记录数。
private String currentText="";//解析得到的数据
private ArrayList News = new ArrayList();//存储得到的数据
private BlogInfo NI = null;//存储数据结构
3、返回解析得到的数据方法(以HTML格式返回);
4、startElement()方法:
5、endElement()方法():
6、characters方法():
7、BlogInfo类: