<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    饒榮慶 -- 您今天UCWEB了嗎?--http://www.ucweb.com

    3G 手機(jī)開發(fā)網(wǎng)

       :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks
    這幾天一直在思考怎么樣設(shè)計Wap的引擎。因為在j2me有限的資源上去解釋xml是比較慢的,所以j2se上的xml類庫是不適合用在j2me上,后來 在網(wǎng)上查找了下發(fā)現(xiàn)了XmlPullParser ,而且用起來速度快,而且包也很小。現(xiàn)在把這兩天學(xué)到的知識記錄下來。

    我的需求是解釋一個標(biāo)準(zhǔn)的wml。比如:
    xml 代碼
    1. xml version="1.0"?>
    2. >
    3. <wml>
    4. <card id="index" title="天速">
    5. <p align="center">天速科技p>
    6. <p align="center"><a > 動漫天下 a>p>
    7. <p align="center"><a > 國色天香 a>p>
    8. <p align="center"><a > 風(fēng)月書齋 a>p>

    9. card> wml>

    上面是個簡單的wml源文件。不過現(xiàn)在的wap網(wǎng)站差不都這樣,基本上沒有script,跟html上的各個控件。所以能解釋上面的文檔,基本上都是可以滿足我的需求的。
    java 代碼
    1. /******************************************************************** 
    2.  * 項目名稱             :<b>j2me學(xué)習(xí) J2me Wap Explorer</b>            <br/> 
    3.  *  
    4.  * Copyright 2005-2006 Wuhua. All rights reserved </br> 
    5.  * 
    6.  * 本程序只用于學(xué)習(xí)目的,不能用于商業(yè)目的。如有需要請聯(lián)系作者 
    7.  ********************************************************************/  
    8.   
    9. import java.io.ByteArrayInputStream;  
    10. import java.io.IOException;  
    11. import java.io.InputStreamReader;  
    12.   
    13. import org.kxml2.io.KXmlParser;  
    14. import org.xmlpull.v1.XmlPullParser;  
    15. import org.xmlpull.v1.XmlPullParserException;  
    16. /** 
    17.  * <b>類名:Test.java</b> </br> 編寫日期: 2006-12-28 <br/> 程序功能描述: <br/> Demo: <br/> 
    18.  * Bug: <br/> 
    19.  *  
    20.  * 程序變更日期 :<br/> 變更作者 :<br/> 變更說明 :<br/> 
    21.  *  
    22.  * @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a> 
    23.  */  
    24. public class Test {  
    25.   
    26.     //private static String xml = "<list><item>apple</item>"  
    27.         //  + "<item>orange</item>" + "<item>pear</item></list>";  
    28.   
    29.     private static String xml ="<?xml version=\"1.0\"?>"  
    30.     +"<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" "   
    31.     +"\"http://www.wapforum.org/DTD/wml_1.1.xml\">"  
    32.     +"<wml>"  
    33.     +"<card id=\"index\" title=\"天速\">"  
    34.     +"<p align=\"center\">天速科技</p>"  
    35.     +"<p align=\"center\"><a href=\"/t/main.a\"> 動漫天下 </a></p>"  
    36.     +"<p align=\"center\"><a href=\"/t/main.a\"> 國色天香 </a></p>"  
    37.     +"<p align=\"center\"><a href=\"/eb/main.a\">  風(fēng)月書齋 </a></p>"  
    38.   
    39.     +"</card> </wml>";  
    40.     public static void main(String args[])  
    41.   
    42.     throws XmlPullParserException, IOException {  
    43.            
    44.            
    45.         ByteArrayInputStream bin = new ByteArrayInputStream(xml.getBytes());  
    46.         InputStreamReader in = new InputStreamReader(bin);  
    47.         KXmlParser parser = new KXmlParser();  
    48.         parser.setInput(in);  
    49.        
    50.         int eventType = parser.getEventType();  
    51.         while (eventType != XmlPullParser.END_DOCUMENT) {  
    52.             if (eventType == XmlPullParser.START_DOCUMENT) {  
    53.                 //System.out.println("Start document:");  
    54.             } else if (eventType == XmlPullParser.END_DOCUMENT) {  
    55.                 //System.out.println("End document");  
    56.             } else if (eventType == XmlPullParser.START_TAG) {  
    57.                 System.out.println("  " + parser.getName());  
    58.                 //System.out.println("Start Count: " + parser.getAttributeCount());  
    59.                 int  size = parser.getAttributeCount();  
    60.                 for(int i=0; i<size; i++){  
    61.                     System.out.println("  " + parser.getAttributeName(i));  
    62.                     System.out.println("  " + parser.getAttributeValue(i));  
    63.                 }  
    64.                    
    65.                   
    66.             } else if (eventType == XmlPullParser.END_TAG) {  
    67.                 System.out.println(" " + parser.getName());  
    68.             } else if (eventType == XmlPullParser.TEXT) {  
    69.                 System.out.println("  " + parser.getText());  
    70.             }  
    71.             eventType = parser.next();  
    72.         }  
    73.     }  
    74.   
    75. }  

    現(xiàn)在我們來看下我們解釋wml的java文件
    現(xiàn)在解釋下上面的東西,
    XmlPullParser 只是個規(guī)范,可以到http://xmlpull.org/ 下載。我們來看看這個規(guī)范要求我們做些什么。
    里面主要的方法有
    java 代碼
    1. //定義一個事件采用回調(diào)的方式,直到讀取xml完畢。
    2. public int getEventType() throws XmlPullParserException ;
    3. //遍歷下一個事件,返回一個事件的類型
    4. public int next() throws XmlPullParserException, IOException
    5. //得到當(dāng)前Tag名字
    6. public String getName();
    7. //獲取文本
    8. public String getText();

    9. //得到當(dāng)前Tag下面的屬性數(shù)量
    10. public int getAttributeCount() ;
    11. //得到當(dāng)前Tag下面指定位置的屬性名稱
    12. public String getAttributeName(int index);

    13. //得到當(dāng)前Tag下面指定位置的屬性植
    14. public String getAttributeValue(int index);

    我們理解了XmlPullParser 可以自己實現(xiàn)一個XmlPullParser。不過java世界里好東西就是多。已經(jīng)有人幫我們做了。
    啊就是kxml。
    這個API本身很簡單。當(dāng)時要把一個完整的wml解釋并繪制在手機(jī)上還是要花相當(dāng)?shù)臅r間的。


    爬蟲工作室 -- 專業(yè)的手機(jī)軟件開發(fā)工作室
    3G視線 -- 專注手機(jī)軟件開發(fā)
    posted on 2007-05-10 09:13 3G工作室 閱讀(2647) 評論(0)  編輯  收藏 所屬分類: j2me 入門
    主站蜘蛛池模板: 亚洲国产天堂在线观看| 国产一级一片免费播放i| 亚洲成AV人片在线观看ww| 一个人看的在线免费视频| 亚洲黄片手机免费观看| 在线播放亚洲精品| 亚洲 自拍 另类小说综合图区 | 亚洲国产中文v高清在线观看| 亚洲av无码专区首页| 日韩人妻无码免费视频一区二区三区| 亚洲色偷偷色噜噜狠狠99网| 最新中文字幕免费视频| 亚洲成av人片天堂网无码】| 国产hs免费高清在线观看| 曰韩无码AV片免费播放不卡 | 亚洲国产综合人成综合网站| 国产亚洲Av综合人人澡精品| 亚洲av再在线观看| 最新国产乱人伦偷精品免费网站 | 亚洲欧美成人av在线观看| 免费又黄又爽又猛的毛片| 2022免费国产精品福利在线| 亚洲欧洲自拍拍偷午夜色无码| 日韩人妻一区二区三区免费| 亚洲毛片在线免费观看| 狠狠久久永久免费观看| 一区二区三区免费高清视频| 亚洲av永久无码制服河南实里| 亚洲啪啪免费视频| 黄色网址免费在线| 亚洲第一中文字幕| 免费黄色大片网站| 成人自慰女黄网站免费大全| 亚洲最大在线观看| 国产日韩成人亚洲丁香婷婷| 91在线精品亚洲一区二区| 深夜免费在线视频| 亚洲综合视频在线| 日本不卡视频免费| 久久久久久毛片免费播放| 亚洲成av人无码亚洲成av人|