栏目分类
开源技术 | Hibernate | JUnit | Tomcat | JBoss | eclipse | Spring | ANT | Struts
java新手入门 | 基础入门 | 开发工具 | JDK | oop面向对象 | 安全配置
J2EE | mvcwea | 应用服务器 | Rmi/Corba/Jini | J2ee核心 | Servlet/JSP | EJB | JDBC/JDO
J2ME | 核心技术 | 嵌入式 | 无线开发
XML | WebServices | XMLBeans
高级技术 | 多线程 | 设计模式 | ULM/OO | p2p/Jxta | JavaSecurity
核心技术 | SwingAwtApplet | 高级编程 | 网络编程 | Jvm技术 | JavaMedia
其它技术 | 资讯动态
排行榜
·J2ME基础入门教程
·熟练使用J2ME在实际开发中的可选包MMAPI
·新手入门之j2me学习方法总结--摘录篇
·J2ME程序开发新手入门九大要点
·J2ME综合:如何在MIDP中实现图片放缩
·J2ME与WebService-KSOAP快速上手
·如何使用“月蚀”进行J2ME开发
·J2ME概述
·J2ME进度条与线程化模型实例解析
·J2ME的现状与发展
·J2ME实现可伸展目录树TreeList(图)
·告诉你J2ME是什么
·知己知彼——J2ME技术详
·Java思路开发易于移植的J2ME游戏
·关于J2ME——MIDP1.0中的碰撞检测
·J2ME工具:使用j2meunit进行游戏测试
·在J2ME中读取各种格式的文本文件
·如何搭建J2ME的开发环境之一二
·J2ME学习系列之如何将J2ME与XML集成
·使用J2ME中的page进行编码转化

    您现在的位置: Linux宝库 >> Java >> J2ME >> 核心技术 >> 文章正文
J2ME学习系列之如何将J2ME与XML集成
Linux宝库 收集整理  作者:Linux宝库  时间:2007-12-31  收藏本站
来自:http://doc.linuxpk.com/45920.html
联系:linuxmine#gmail.com
分类:[核心技术]
  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:

  30

  tag<Subject>:

  text:

  Integration

  tag<Body>:

  attribute:Language:English

  text:

  This is J2ME!!!!!! 本文来自:http://doc.linuxpk.com/45920.html

 
     最新更新
·深入了解J2ME的几个重要概念
·J2ME学习笔记(6)—连接MIDlet到文本文件
·J2ME学习笔记(5)—MIDlets中的图形编程
·J2ME学习笔记(4)—用MIDPAPI开发MIDlets
·J2ME学习笔记(3)—初次接触MIDlets
·J2ME学习笔记(2)—平台体系结构详解
·J2ME学习笔记(1)—平台介绍及简单实例
·J2METimer-更简单的实现多任务调度执行
·J2ME基础知识
·J2MEMIDP提供的最重要的图形元素
·精通J2ME中的HelloWorld
·J2METimer使用指南
·请关注J2MEWTK2.2的新特性
·详细介绍并掌握J2ME的安全结构
·如何使用“月蚀”进行J2ME开发
·如何搭建J2ME的开发环境之一二
·J2ME编程实例---之数字键的测试
·利用J2ME与ASP建立数据库连接
·J2ME平台构件及开发应用程序示例
·J2ME(CLDC/MIDP)简介
·关于J2MEMIDP1.0.3中的安全问题简述
·学习在J2ME中使用代码
·J2ME的起源和发展历程
·认识了解“J2ME”
·探索J2ME:用GCF通信
·探索J2ME:使用记录管理系统
·探索J2ME:对记录进行排序
·浅析J2EE、J2SE和J2ME
·J2ME应用基础
·探索J2ME:创建开销细节表单