程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> J2ME與XML的集成

J2ME與XML的集成

編輯:J2ME

J2MEXML的集成

1.       XML(Extensible Markup Language)可擴展標記語言----- XML獨立於硬件和軟件,XML文件和Html文件一樣,實際上是一個文本文件。創建XML文件最普通的工具和Html一樣,就是“記事本”了。除了“記事本”之外,當然還有一些更加方便的工具,如XML Notepad、XML Pro、CLIP!XML SPY等,這些工具的一大特點是:能夠檢查你所建立的XML文件是否符合XML規范。

2.        為了訪問XML文件,J2ME工具箱必須包含一個XML分析程序,適用於移動設備的XML分析程序優勢在於:不用消耗大量的內存(占用內存較少).

3.        適用於移動設備的XML分析程序有以下幾種:(XML分析程序需要從Internet上下載)

KXML  MinXML  NanoXML   TinyXML

4.        分析XML文件有兩種方法:基於事件的和基於樹的。

基於事件的XML分析程序-----單獨分析XML文件中的每個元素,並通過回調方法把分析的數據送到MIDlet應用。

基於樹的XML分析程序-----相反讀入整個XML文件到一種內部的樹結構,把此文件存儲在移動設備的內存中,缺點是帶來設備上很大的內存開銷,優點是快而方便地導航和操縱已分析的數據。

5.        一個實例-----用基於樹的XML分析程序連接MIDlet到XML文件

1)      首先需要一個TinyXML分析程序,可從Internet上下載,該程序是一個.jar的包,實際上就是一個Java的類庫(很小15KB)

2)      下載完後把TinyXML分析程序放到X:\WTK104\aPPS\ProjectName\lib中。

3)     XML文件內容如下:

<?XML version="1.0" ?>

<mail>

       <From>Developer</From>

       <To>Students</To>

       <Cc>Faculty</Cc>

       <Date>30 </Date>

       <Subject>Integration</Subject>

       <Body Language="English">

              This is J2ME!!!!!!

       </Body>

</mail>

另存為mail.XML,你也可以使用自己的XML文件-----把該文件放如J2EE服務器的public_Html文件夾中。

4)      MIDlet應用代碼如下:

import Java.io.*;

import Java.util.*;

import Java.lang.String;

import Javax.microedition.lcdui.*;

import Javax.microedition.io.*;

import Javax.microedition.midlet.*;

//下面兩個包出現在XML分析程序tinyTreeDemo中

import gd.XML.*;

import gd.XML.tiny.*;

public class tinyTreeDemo extends MIDlet implements CommandListener

       private String url;

       private ParsedXML root;

       private Display myDisplay=null;

       private Form mainScreen;

       private TextField requestFIEld;

       Command sendCommand=new Command("SEND",Command.OK,1);

       public tinyTreeDemo()

       {

              //放置mail.XML文件的Web站點

              url="http://127.0.0.1:8000/mail.XML";

              myDisplay=Display.getDisplay(this);

              mainScreen=new Form("Type a URL:");

              requestField=new TextField(null,url,100,TextFIEld.URL);

              mainScreen.append(requestFIEld);

              mainScreen.addCommand(sendCommand);

              mainScreen.setCommandListener(this);

       }

       public void startApp() throws MIDletStateChangeException

       {

              myDisplay.setCurrent(mainScreen);

       }

       public void pauseApp()

       {

             

       }

       public void destroyApp(boolean unconditional)

       {

             

       }

       public void commandAction(Command c,Displayable s)

       {

              if(c==sendCommand)

              {

                     String urlString=requestFIEld.getString();

                     try

                     {

                            //返回XML根元素

                            root=TinyParser.parseXML(url);

                            displayNode(root);

                     }

                     catch(ParseException e)

                     {

                            System.err.println("startApp:" + e);

                     }

              }

       }

       private void displayNode(ParsedXML px)

       {

              //返回節點對象類型

              String nodeName=px.getTypeName();

              //返回節點對象類型+名稱,例如tag<mail>, tag為類型(標簽),mail為節點名

              if(px.getName()!=null)

                     nodeName+="<" + px.getName() + ">";

                     //返回存儲在標簽之間的內容

              String nodeContent=px.getContent();

              if(nodeContent==null)

                     nodeContent="";

                     //在控制台中打印出來

              System.out.println(nodeName + ":");

              System.out.println(nodeContent);

             

              Enumeration e;

              //返回屬性,如果有就存儲在Enumeration中

              e=px.attributes();

              if(e.hasMoreElements())

              {

                     System.out.print("attribute:");

                     while(e.hasMoreElements())

                     {

                            //返回屬性名稱

                            String attrName=(String)e.nextElement();

                            //px.getAttribute(attrName)返回屬性的值

                            System.out.println(attrName + ":" + px.getAttribute(attrName));

                           

                     }

              }

              //返回節點中的元素,如果有就存儲在Enumeration中

              e=px.elements();

              if(e.hasMoreElements())

              {

                     //顯示下一個節點

                     while(e.hasMoreElements())

                            displayNode((ParsedXML)e.nextElement());

              }

       }

另存為tinyTreeDemo.Java

5)      編譯---預檢驗----測試(J2EE服務器需開啟)

結果如下,控制台顯示如下信息----

root:

tag<mail>:

tag<From>:

text:

Developer

tag<To>:

text:

Students

tag<Cc>:

text:

Faculty

tag<Date>:

text:

tag<Subject>:

text:

Integration

tag<Body>:

attribute:Language:English

text:

This is J2ME!!!!!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved