网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > J2ME > 核心技术 > 分享关于j2mexmlReader的轻量级实现  

分享关于j2mexmlReader的轻量级实现

2008-05-19  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

    一、kxml的前身--xmlpull
  
  xmlpull提供了为资源有限的环境(如j2me)和j2ee应用服务器使用的xml解析API,xml pull解析允许使用stream解析的方式。
  
  xmlpull的特点:
  
  * 简单的接口-解析器包含一个接口、一个异常、一个建立解析器的factory;
  
  * 无实现依赖-模仿JAXP的factory类和很容易的切换不同的XmlPull V1 API实现,而无需修改代码;
  
  * 易用性-只有唯一的next()方法用来读取下面5类事件中的一个:
  
  START DOCUMENT-文档起始点,这时解析器还没有准备好读取文档;
  
  START_TAG-解析器读取到了element声明的开始标签,就是xml文件中声明element用的"<";
  
  TEXT-解析器读取到了element的内容,如element的各种属性和value;
  
  END_TAG-解析器读取到了element声明的结束标签,就是"/>"或者"</...>";
  
  END_DOCUMENT-解析器读取到文档的结尾,解析工作完毕。
  
  * 多功能性-由于提供了xml解析器的通用接口,所以允许多个实现和在特性和属性上的扩展
  
  * 良好的性能-由于提供了通用的接口,可以说也就为使用快速的xml解析器提供了条件,但是目前最快的解析器,本人还没遇到过。:-) 网管联盟bitsCN_com
  
  * 最小化需要-设计上与j2me兼容,从而使其能工作于小型设备和建立使用微量内存的xmlPull兼容的解析器。
  
  二、建立在良好构架上的kxml
  
  xmlpull api提供的通用的xml内容解析功能使用方式:使用一个循环来遍历到下一个事件,并切换到一个针对这个事件的分支语句处理。但是在使用xml解析器时,一些xml element不仅包括text还有其它的element(被称为子元素或者内嵌元素)。对于这样的xml数据,解析处理被简单化到了使用xmlpull api的nextTag和nextText方法。另外,require方法也可以使用一个解析状态的参数来表示希望取得数据的event类型。以上就是kxml使用方法。
  
  如解析下面内容的简单xml文件:
  <elements>
  <text>text1</text>
  <text>text2</text></elements>
  
  解析代码片断如下:
  parser.nextTag();parser.require(XmlPullParser.START_TAG, null, "elements");
  while(parser.nextTag() == XmlPullParser.START_TAG) { parser.require(XmlPullParser.START_TAG, null, "text");
  // handle element content  System.out.println("text content: "+ parser.nextText()); 网管u家u.bitscn@com
  parser.require(XmlPullParser.END_TAG, null, "text");}parser.require(XmlPullParser.END_TAG, null, "elements");
  
  从上面的代码看出,的确很简单明了。
  
  三、背向kxml的原因
  
  但是如果真正的使用kxml开发j2me程序时会发现,kxml包和其依赖的xmlpull包不仅无形中增加了程序发布时的大小,而且由于没有最好的解析器带来的负面性能损耗会随着xml文件的大小成非线性增长(还好不是指数级的)。这些成为了kxml的流行障碍。 中国网管联盟bitsCN.com

网管网www.bitscn.com


TAGs
 上一篇:J2ME的MVC2开源框架KBOX   下一篇:没有了
分享关于j2mexmlReader的轻量级实现 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: