android xml defaulthandler解析,详解使用sax解析xml文件的DefaultHandler处理类(转载)...

class RSSHandler extendsDefaultHandler {privateContext mContext;privateRSSItem mRSSItem;privateRSSDBInterface mRSSDBInterface;private final int TITLE_STATE = 1;int AUTHOR_STATE = 2;int LINK_STATE = 3;int DESCRIPTION_STATE = 4;int CATEGORY_STATE = 5;int PUBDATE_STATE = 6;标记当前节点

intcurrentState;publicRSSHandler(Context ctx){

mContext=ctx;初始化当前节点标记为0

currentState = 0;RSSDBInterface = newRSSDBInterface(mContext);

}开始解析文档

mRSSItem = newRSSItem();

}开始解析节点

if (localName.equals("channel")){return;

}if (localName.equals("item")){当遇到一个item节点时,就实例化一个RSSItem对象

mRSSItem = newRSSItem();return;

}if (localName.equals("title")){

currentState=TITLE_STATE;if (localName.equals("author")){

currentState=AUTHOR_STATE;if (localName.equals("description")){

currentState=DESCRIPTION_STATE;if (localName.equals("link")){

currentState=LINK_STATE;if (localName.equals("category")){

currentState=CATEGORY_STATE;if (localName.equals("pubDate")){

currentState=PUBDATE_STATE;return;

}

}这是节点解析完成时调用的,这里我们遇到item的时候才调用下面的

if(localName.equals("item" && mRSSItem != null)){

ContentValues values= newContentValues();

values.put(RSSDBInfo.Columns._TITLE,mRSSItem.getTitle());

values.put(RSSDBInfo.Columns._AUTHOR,mRSSItem.getAuthor());

values.put(RSSDBInfo.Columns._CATEGORY,mRSSItem.getCategory());

values.put(RSSDBInfo.Columns._DESCRIPTION,mRSSItem.getDescription());

values.put(RSSDBInfo.Columns._LINK,mRSSItem.getLink());

values.put(RSSDBInfo.Columns._PUBDATE,mRSSItem.getPubdate());

values.put(RSSDBInfo.Columns._ISREAD,RSSUtils.ARTICALE_UNREAD);

mRSSDBInterface.insertRSStoDB(values);

}

}intlength) {

String theString= newString(ch,start,length);switch(currentState){caseTITLE_STATE:

mRSSItem.setTitle(theString);

currentState= 0;break;caseAUTHOR_STATE:

mRSSItem.setAuthor(theString);

currentState= 0;caseLINK_STATE:

mRSSItem.setLink(theString);

currentState= 0;caseDESCRIPTION_STATE:

mRSSItem.setDescription(theString);

currentState= 0;caseCATEGORY_STATE:

mRSSItem.setCategory(theString);

currentState= 0;casePUBDATE_STATE:

mRSSItem.setPubdate(theString);

currentState= 0;break;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值