付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】AndroidSAX解析器怎么实现
本篇内容介绍了“AndroidSAX解析器怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让在下带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!de>RssHandlerde>类扩展了de
>org.xml.sax.helpers.DefaultHandlerde>类。该类为SAX
解析器生成的事件所对应的所有方法都提供了一个默认的非操作实现。这允许子类根据需要仅覆盖一些方法。de>RssHandlerde>
提供了一个额外的API,即de>getMessagesde>。它返回处理程序在从SAX解析器接收事件时所收集的de
>Messagede>对象列表。它有另外两个内部变量,de>currentMessagede>针对被解析的
de>Messagede>实例,以及名称为de>builderde>的de
>StringBuilderde>变量,用于存储文本节点中的字符数据。解析器将相应事件发送给处理程序时会调用de
>startDocumentde>方法,这两个变量的初始化操作就是在此时完成。查看de>startElementde>方法。在XML文档中每次遇到开始标记时都会调用它。您只关心该标记何时为de
>ITEMde>标记。对于这种情况,您将创建一个新的de>Messagede>。现在来看de
>charactersde>方法。遇到文本节点中的字符数据时便会调用此方法。数据只是被添加到de>builderde
>变量中。***,我们来看de>endElementde>方法。遇到结束标记时会调用此方法。对于与某de
>Messagede>属性相对应的标记,如de>TITLEde>和de>LINKde
>,则使用de>builderde>变量中的数据在de>currentMessagede>
上设置适当的属性。如果结束标记是一个de>ITEMde>,则de>currentMessagede>
将被添加到Messages列表中。所有这些都是非常典型的SAX解析;此处的一切都不是Android所特有的。因此,如果您知道如何编写
JavaSAX解析器,则应该知道如何编写AndroidSAX解析器。但是,androidsdk确实在SAX上添加了一些便捷的特性。AndroidSAX解析器java代码:public
class
AndroidSaxFeedParser
extends
BaseFeedParser
{
public
AndroidSaxFeedParser(String
feedUrl)
{
super(feedUrl);
}
public
List<
Message
>
parse()
{
RssHandler
handler
=
new
RssHandler();
try
{
Xml.parse(this.getInputStream(),
Xml.Encoding.UTF_8,
handler);
}
catch
(Exception
e)
{
throw
new
RuntimeException(e);
}
return
handler.getMessages();
}
}注意,这个类仍然使用了一个标准的SAX处理程序,因此您仅仅重用了所示的de>RssHandlerde>。能够重用SAX
处理程序是非常不错的,但其代码稍微有些复杂。您可以想像,如果需要解析一个更加复杂的XML文档,则处理程序可能会带来各种各样的
bug。举例来说,回头看看de>endElementde>方法。注意,在尝试设置属性之前,它检查了de
>currentMessagede>是否为null。现在,再回头看看示例XML。注意,de>ITEMde>
标记外部有一些de>TITLEde>和de>LINKde>标记。这就是使用null
检查的原因。否则,每一个de>TITLEde>标记会导致一个de>NullPointerExceptionde
>。Android提供了自己独有的SAXAPI,它排除了您编写自己的SAX处理程序的需要。经过简化的AndroidSAX解析器java代码:public
class
AndroidSaxFeedParser
extends
BaseFeedParser
{
public
AndroidSaxFeedParser(String
feedUrl)
{
super(feedUrl);
}
public
List<
Message
>
parse()
{
final
Message
currentMessage
=
new
Message();
RootElement
root
=
new
RootElement("rss");
final
List<
Message
>
messages
=
new
ArrayList<
Message
>();
Element
channel
=
root.getChild("channel");
Element
item
=
channel.getChild(ITEM);
item.setEndElementListener(new
EndElementListener(){
public
void
end()
{
messages.add(currentMessage.copy());
}
});
item.getChild(TITLE).setEndTextElementListener(new
EndTextElementListener(){
public
void
end(String
body)
{
currentMessage.setTitle(body);
}
});
item.getChild(LINK).setEndTextElementListener(new
EndTextElementListener(){
public
void
end(String
body)
{
currentMessage.setLink(body);
}
});
item.getChild(DESCRIPTION).setEndTextElementListener(new
EndTextElementListener(){
public
void
end(String
body)
{
currentMessage.setDescription(body);
}
});
item.getChild(PUB_DATE).setEndTextElementListener(new
EndTextElementListener(){
public
void
end(String
body)
{
currentMessage.setDate(body);
}
});
try
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026璧合大数据面试题及答案
- 焦虑伴发失眠双向调控
- 2025年中国生发油市场调查研究报告
- 2025年中国特异型防弹防爆玻璃市场调查研究报告
- 2025年中国滴水管市场调查研究报告
- 2025年中国泳池吸污喉市场调查研究报告
- 2025年中国水泥脊瓦市场调查研究报告
- 2025年中国压缩机空气过滤器总成市场调查研究报告
- 炎症性肠病营养治疗专家共识(第三版)要点更新与解读
- 危重症患者应急处理
- 2026中国地质大学(北京)管理岗、专业技术岗招聘18人笔试参考题库及答案解析
- 无损检测外包合同
- 水资源使用申请报告模板
- 2026四川遂宁市招聘园区产业发展服务专员公50人告笔试备考题库及答案解析
- 2026河北邢台隆尧县瑞尉储动公交客运有限公司招聘考试备考试题及答案解析
- 胸腺瘤合并重症肌无力围手术期护理
- 2025年河北唐山市初二地理生物会考考试试题及答案
- 2026高渗高血糖综合征课件
- 【地理】 东南亚第2课时课件-2025-2026学年湘教版(2024)七年级地理下学期
- 成人手术后疼痛评估与护理
- 2026中国硅烷偶联剂行业现状动态与需求趋势预测报告
评论
0/150
提交评论