论坛首页 移动开发技术论坛

XmlPullParser 的例子

浏览 15882 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-12-29  
这几天一直在思考怎么样设计Wap的引擎。因为在j2me有限的资源上去解释xml是比较慢的,所以j2se上的xml类库是不适合用在j2me上,后来在网上查找了下发现了XmlPullParser ,而且用起来速度快,而且包也很小。现在把这两天学到的知识记录下来。

我的需求是解释一个标准的wml。比如:
xml 代码
 
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">  
  3. <wml>  
  4. <card id="index" title="天速">  
  5. <p align="center">天速科技</p>  
  6. <p align="center"><a href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=03020047"> 动漫天下 </a></p>  
  7. <p align="center"><a href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=03020048&amp;SPURL=http://211.155.31.143/t/viewPic.a?picId=1308"> 国色天香 </a></p>  
  8. <p align="center"><a href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=04070717&amp;SPURL=http://211.155.31.143/eb/allBook.a">  风月书斋 </a></p>  
  9.   
  10. </card> </wml>  

上面是个简单的wml源文件。不过现在的wap网站差不都这样,基本上没有script,跟html上的各个控件。所以能解释上面的文档,基本上都是可以满足我的需求的。

现在我们来看下我们解释wml的java文件
java 代码
  1. /********************************************************************
  2. * 项目名称 :j2me学习 J2me Wap Explorer
  3. *
  4. * Copyright 2005-2006 Wuhua. All rights reserved
  5. *
  6. * 本程序只用于学习目的,不能用于商业目的。如有需要请联系作者
  7. ********************************************************************/
  8. import java.io.ByteArrayInputStream;
  9. import java.io.IOException;
  10. import java.io.InputStreamReader;
  11. import org.kxml2.io.KXmlParser;
  12. import org.xmlpull.v1.XmlPullParser;
  13. import org.xmlpull.v1.XmlPullParserException;
  14. import org.xmlpull.v1.XmlPullParserFactory;
  15. /**
  16. * 类名:Test.java
    编写日期: 2006-12-28
    程序功能描述:
    Demo:
  17. * Bug:
  18. *
  19. * 程序变更日期 :
    变更作者 :
    变更说明 :
  20. *
  21. * @author wuhua
    rrq12345@163.com
  22. */
  23. public class Test {
  24. //private static String xml = " <list><item>apple</item>"</list>
  25. // + "<item>orange</item>" + "<item>pear</item>";
  26. private static String xml =""
  27. +"
  28. +"\"http://www.wapforum.org/DTD/wml_1.1.xml\">"
  29. +"<wml>"</wml>
  30. +"<card title="\&quot;天速\&quot;" id="\&amp;quot;index\&quot;">"</card>
  31. +"

    天速科技

    "
  32. +"

    int index);


我们理解了XmlPullParser 可以自己实现一个XmlPullParser。不过java世界里好东西就是多。已经有人帮我们做了。
啊就是kxml。
这个API本身很简单。当时要把一个完整的wml解释并绘制在手机上还是要花相当的时间的。
   发表时间:2007-01-04  
支持,继续努力!!!!
0 请登录后投票
   发表时间:2007-01-04  
pull parser为什么快?sax parser为什么慢?我觉得这是关键。我曾经在delphi上把一个sax parser改装成pull parser。其实很简单,只要把回调的API改成基于循环的主动查询。做的是减法。
0 请登录后投票
   发表时间:2007-01-04  
我用kml实现过类似burlap的玩意,现在JDK6.0已经有实现了StAX(JSR 173)


不过这一块挺适合重复造轮子的,我原来碰到就是公司有xml协议不是规范的,比如<class#>什么这种,就自己改kml
0 请登录后投票
   发表时间:2007-01-04  
在设计的过程中发现容错性是很重要的。
我现在就遇到这个问题,解释wml的时候,遇到 &nbsp;这些特殊符合就抛出异常。很是郁闷。主要的是kml抛出异常后,就停止解释了。要改装下它。不过wml文件是否很标准也一定要解释完毕。就想firefox解释html一样。
0 请登录后投票
   发表时间:2007-01-08  
-.-我是初学者 

经常关注楼主的帖子  收获很大
0 请登录后投票
   发表时间:2007-01-08  
哈哈。谢谢关注与支持,我会继续努力搞好自己的blog,并且多与大家交流技术,希望可以相互提高各自的水平,这样可以更深入的去探讨比较东西。
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics