J2ME平台解析WAP网页

来源:互联网 发布:网络信号防雷器价格 编辑:程序博客网 时间:2024/05/23 23:54

alexlikeask是本人在javaeye论坛使用的博客名称,大家有时间也可以去那里坐坐。

 

做了两年多的J2ME平台手机应用开发,从刚入行的一个菜鸟,到现在对新项目的驾轻就熟,过程即苦涩,又幸福。想必每个开发人员都有着深刻的体会。

 

  每个新的项目都伴随着新的领域和新的问题,大家在遇到这些问题也是习惯性的通过WEB网页Google一下。其实对于Java平台的一些知识点上网查资料还是很方便就能查到的,毕竟这是一个开源的平台。虽然网上有着很多优秀的资源可以利用,但是每个项目的不同,也造就了“具体问题,具体分析”。并且,也有很多的技术点由于受到公司的知识产权的问题也无法做到开源。

 

  今天,我就把一个自己写的WAP解析器给大家做个开源,目的就是希望起到一个抛砖引玉的作用,启发大家的逻辑思维能力。

 

  本解析器是基于sax原理(不知道的上网查查就清楚了)

 

 

 

 

   上面这段代码,是在获得HttpConnection对象以后,通过int code = getResponseCode();方法获得服务器返回的连接信息,通过这个code我们可以判断连接成功还是失败,或者是URL地址重新定向。如果服务器返回的信息是200的话,我们就可以进行解析WAP网页了。

 

    在贴下一段代码之前,我先讲解一下解析的逻辑,这有助于更好的读懂代码。

  

  客户端接收到的WAP页面,都是有多个不同的标签所组成的,所以解析页面就要从这些标签入手,

   例;

        <html>

               <head>

                     <title>百度一下,你就知道</title>

               </head>

        <html>

 上面这段代码,是一个比较简单的HTML的结构,那么我们大家可以看所有的标签都有一对尖括号 < 和 > 。好的,我们就从这个括号入手,对页面进行解析。

 

 首先,把停止读取的字符放入到一个table中去,

 

 

 

 

 

 

 

上面代码中的这一部分,就是一个循环解析标签的过程,isParser是整个解析过程的停止标志,只有读到-1的时候,isParser = false;

 

 

 

 

   这一部分,是解析开始标签的方法,其中,endChar是最后读取的字符,这个变量非常重要,所以要用一个全局变量来进行控制,其他的逻辑已经很清楚,就不在多讲了。

 

 

 

 

   这段代码就是解析结束标签,以及标签属性的方法,

 

   大家也看到了,就是这些方法当中都将InputStream这个对象传入到了方法中,这个输入流结合endChar还有tagNameEndChars,来控制要读取字符的长度。方法中的skipUntil();和onTagreceived();是跳过一定长度字符的方法和将标签转为可视的对象的方法,这些我就不贴代码了,因为这些不是解析器的关键。

 

  好了,到现在一个解析器就完成了,虽然说代码不是很全,不过只要能够理解其中的原理,在通过自己的动手,一个属于你自己的WAP解析器也会孕育而生。

 

第一次发表文章,所以代码贴的不太规范,请大家见谅,自己做一些整理。

 

 

 

原创粉丝点击