无花的空间--http://wuhua.3geye.net-- 您今天UCWEB了吗?--http://www.ucweb.com

当你来到我的空间的时候,你会看到很多Google,Nokia,Mobile,J2ME ,Android,3G,无线开发,手机软件,手机软件开发等与Google,手机相关的文章,你千万不要惊讶。这就是我一个专注Google,无线开发的无花。传播知识,分享经验,技术交流是我开空间的直接目的。当然如果有项目开发,我还是很希望赚点外快的。

用户操作
[即时聊天] [发私信] [加为好友]
无花ID:gooogledev
40542次访问,排名2971,好友20人,关注者24人。
J2EE 2年的开发时间,
J2ME 2年的开发时间
gooogledev的文章
原创 80 篇
翻译 0 篇
转载 3 篇
评论 201 篇
无花的公告

人要吃很多苦才可以长大!

踏实平凡人应该遵守的原则!

与我TM

gooogledev@gmail.com

友情链接

我的j2me创意

Wap浏览器的源代码

用自己写的rms引擎写的电话本

RSS订阅此博客  
用抓虾订阅此博客
用google订阅此博客
用bloglines订阅此博客
    网络封神榜 | 饶荣庆
最近评论
22:main()在哪个.java中
ant-shopping:I support author's viewpoint, hoped that will have later also more better articles,
abercrombie fitch handbag
ptsell:I support author's viewpoint, hoped that will have later also more better articles,
Balenciaga Bags
真的假的,屁股上的痣也能拍出来?
leo2012:奇怪,怎么下的wap explorer不能访问wap站点
文章分类
收藏
    相册
    j2me创意图片
    j2me教程
    我的照片
    我的链接
    3G视线
    EasyMF J2ME框架
    Lucene中国
    我的Google
    无花的博客
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 基于j2me xml解释 引擎 XmlPullParser 的例子收藏

    新一篇:  RMS入门之旅--详细电话本设计 | 旧一篇: 用一个简单的例子来看MIDlet的生命周期

    这几天一直在思考怎么样设计Wap的引擎。因为在j2me有限的资源上去解释xml是比较慢的,所以j2se上的xml类库是不适合用在j2me上,后来 在网上查找了下发现了XmlPullParser ,而且用起来速度快,而且包也很小。现在把这两天学到的知识记录下来。

    我的需求是解释一个标准的wml。比如:
    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
    <wml>
    <card id="index" title="天速">
    <align="center">天速科技</p>
    <align="center"><href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=03020047"> 动漫天下 </a></p>
    <align="center"><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>
    <align="center"><href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=04070717&amp;SPURL=http://211.155.31.143/eb/allBook.a">  风月书斋 </a></p>

    </card> </wml>
     

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

    /********************************************************************
     * 项目名称                :<b>j2me学习 J2me Wap Explorer</b>            <br/>
     * 
     * Copyright 2005-2006 Wuhua. All rights reserved </br>
     *
     * 本程序只用于学习目的,不能用于商业目的。如有需要请联系作者
     *******************************************************************
    */


    import java.io.ByteArrayInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;

    import org.kxml2.io.KXmlParser;
    import org.xmlpull.v1.XmlPullParser;
    import org.xmlpull.v1.XmlPullParserException;
    /**
     * <b>类名:Test.java</b> </br> 编写日期: 2006-12-28 <br/> 程序功能描述: <br/> Demo: <br/>
     * Bug: <br/>
     * 
     * 程序变更日期 :<br/> 变更作者 :<br/> 变更说明 :<br/>
     * 
     * 
    @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a>
     
    */

    public class Test {

        
    //private static String xml = "<list><item>apple</item>"
            
    //    + "<item>orange</item>" + "<item>pear</item></list>";

        
    private static String xml ="<?xml version="1.0"?>"
        
    +"<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" " 
        
    +""http://www.wapforum.org/DTD/wml_1.1.xml">"
        
    +"<wml>"
        
    +"<card id="index" title="天速">"
        
    +"<p align="center">天速科技</p>"
        
    +"<p align="center"><a href="/t/main.a"> 动漫天下 </a></p>"
        
    +"<p align="center"><a href="/t/main.a"> 国色天香 </a></p>"
        
    +"<p align="center"><a href="/eb/main.a">  风月书斋 </a></p>"

        
    +"</card> </wml>";
        
    public static void main(String args[])

        
    throws XmlPullParserException, IOException {
             
             
            ByteArrayInputStream bin 
    = new ByteArrayInputStream(xml.getBytes());
            InputStreamReader in 
    = new InputStreamReader(bin);
            KXmlParser parser 
    = new KXmlParser();
            parser.setInput(in);
         
            
    int eventType = parser.getEventType();
            
    while (eventType != XmlPullParser.END_DOCUMENT) {
                
    if (eventType == XmlPullParser.START_DOCUMENT) {
                    
    //System.out.println("Start document:");
                }
     else if (eventType == XmlPullParser.END_DOCUMENT) {
                    
    //System.out.println("End document");
                }
     else if (eventType == XmlPullParser.START_TAG) {
                    System.out.println(
    "  " + parser.getName());
                    
    //System.out.println("Start Count: " + parser.getAttributeCount());
                    int  size = parser.getAttributeCount();
                    
    for(int i=0; i<size; i++){
                        System.out.println(
    "  " + parser.getAttributeName(i));
                        System.out.println(
    "  " + parser.getAttributeValue(i));
                    }

                     
                    
                }
     else if (eventType == XmlPullParser.END_TAG) {
                    System.out.println(
    " " + parser.getName());
                }
     else if (eventType == XmlPullParser.TEXT) {
                    System.out.println(
    "  " + parser.getText());
                }

                eventType 
    = parser.next();
            }

        }


    }


    现在我们来看下我们解释wml的java文件
    现在解释下上面的东西,
    XmlPullParser 只是个规范,可以到http://xmlpull.org/ 下载。我们来看看这个规范要求我们做些什么。
    里面主要的方法有
    public int getEventType() throws XmlPullParserException ;
    //遍历下一个事件,返回一个事件的类型
    public int next() throws XmlPullParserException, IOException
    //得到当前Tag名字
    public String getName();
    //获取文本
    public String getText();
    #

    //得到当前Tag下面的属性数量
    public int getAttributeCount() ;
    //得到当前Tag下面指定位置的属性名称
    public String getAttributeName(int index);
    #

    //得到当前Tag下面指定位置的属性植
    public String getAttributeValue(int index); 

    我们理解了XmlPullParser 可以自己实现一个XmlPullParser。不过java世界里好东西就是多。已经有人帮我们做了。
    啊就是kxml。
    这个API本身很简单。当时要把一个完整的wml解释并绘制在手机上还是要花相当的时间的。

    发表于 @ 2007年05月10日 09:13:00|评论(loading...)|编辑

    新一篇:  RMS入门之旅--详细电话本设计 | 旧一篇: 用一个简单的例子来看MIDlet的生命周期

    评论

    #路过 发表于2008-07-29 01:56:13  IP: 221.5.7.*
    没想到百度到你这里来了
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 无花