J2ME学习笔记(七)-----J2ME与XML的集成

原创 2004年08月05日 09:27:00

J2MEXML的集成<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.        XML(Extensible Markup Language)可扩展标记语言----- XML独立于硬件和软件,XML文件和HTML文件一样,实际上是一个文本文件。创建XML文件最普通的工具和HTML一样,就是记事本了。除了记事本之外,当然还有一些更加方便的工具,如XML NotepadXML ProCLIPXML 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分析程序连接MIDletXML文件

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:

30

tag<Subject>:

 

text:

Integration

tag<Body>:

 

attribute:Language:English

text:

This is J2ME!!!!!!

J2ME及其移植

J2me及其移植   1. 简介 1.1 系统结构 Java ME 以往称作J2ME(Java Platform,Micro Edition),是为机顶盒、...
  • ydhua1988
  • ydhua1988
  • 2015年01月22日 09:22
  • 1167

【代码】如何快速将J2me游戏移植到Android上

前言 小白:“老大,你让做的三个J2me游戏搞定了,请看DEMO。” 老大:“恩,不错,小白,你知道Android这个平台吧?” 小白:“恩,听过。听说和J2ME有很多共同点。” 老大:“(一阵奸...
  • u011884154
  • u011884154
  • 2013年09月11日 12:13
  • 1222

JDK、J2EE、J2SE、J2ME的区别

你对JDK、J2EE、J2SE、J2ME概念是否了解,这里和大家分享一下JDK、J2EE、J2SE、J2ME的概念以及他们的关系区别,相信本文介绍一定会让你有所收获。JDK,J2EE,J2SE,J2M...
  • wangyunzhong123
  • wangyunzhong123
  • 2016年06月02日 13:40
  • 2760

j2me程序如何移植到ophone

文章转自东方尚智3g数字内容学院沈大海老师博客: 中国拥有世界最庞大的电信客户群,仅移动用户就达7亿,3G在中国有最大的市场做后盾,无论现在的市场发展如何的困难,3G费用的降低是大势所趋,不久的...
  • bingchu2401
  • bingchu2401
  • 2017年01月03日 00:27
  • 56

J2MEWTK提供六种模拟器

J2ME就是Java 2 Platform,micro Edition的缩写。J2ME是Java 2的一个组成部分,与J2SE、J2EE并称。根据Sun Microsystems,Inc.的定义:J2...
  • u012402926
  • u012402926
  • 2016年07月04日 16:20
  • 160

J2ME学习笔记

一、J2ME介绍:     J2ME的全称是Java2 Platform Micro Edition,其技术架构如下           Optional Package             ...
  • yihu0817
  • yihu0817
  • 2014年12月16日 20:30
  • 449

卡马克卷轴算法研究

中文摘要 对于J2ME框架下的手机游戏程序的开发,其地图滚动的重绘有多种算法,由于手机性能的限制和开发周期等其他非技术条件,需要根据情况灵活选择所需的技术。但在及其苛刻条件下,如系统CPU资源不...
  • id6831
  • id6831
  • 2017年08月06日 10:51
  • 280

j2me中的A*算法

import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.lang.Thread; ...
  • gundumw100
  • gundumw100
  • 2017年04月10日 18:06
  • 79

J2ME安装配置步骤

J2ME安装配置步骤 1.安装JDK 和 WTK2.5.2 2.安转Eclipse3.3 3.安装EclipseMe1.7.6 4.测试HelloWorld 5.使用Nokia模拟器测试(这一步可以不...
  • nzzl54
  • nzzl54
  • 2013年04月14日 13:44
  • 475

j2se,j2ee,j2me区别

J2SE J2EE J2ME的区别 多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供不同的包,以面向特定的应用。 ...
  • monkeyqqqq
  • monkeyqqqq
  • 2014年04月17日 20:10
  • 506
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:J2ME学习笔记(七)-----J2ME与XML的集成
举报原因:
原因补充:

(最多只允许输入30个字)