在J2ME开发中解析XML

目前,XML已经广泛应用于数据交换领域,xml是基于纯文本的,具有优秀的跨平台特性。本文将讲述如何在J2ME中解析XML进行数据传输。

XML写法比较简单,而且非常便于人来阅读。但是必须在客户端和服务器端有XML的解析器才可以正常通信,由于初期的移动信息设备内存和处理器上的不足,所以在MIDP1.0中并没有提供对XML的支持。随着内存和处理器的提高,对XML的支持成为了可能。在JSR182中提供了XML的解析器,但是这并不是标准MIDP中的API需要特定的实现才可以支持。幸运的是有第三方的API对解析xml提供了支持,比较有名的是kxml和nanoxml。

使用XML之前,你必须考虑好是不是必须用它来传输数据,因为解析xml是比较耗费资源的,尤其是在CPU和内存的资源都很宝贵的条件下。如果我们能使用DataInputStream和DataOutputStream传输的话就尽量不要使用XML。XML的解析器有两种,一种是确认性的,他在解析之前会对xml的文档进行有效性的验证,确保这是应用程序需要的。另一种则是非确认性的,他不做验证工作直接进行解析,无疑这样的速度会快。kxml和nanoxml都是这样的解析器。它们也存在差别,kxml是增量解析器他会一点一点的解析,这样在解析大的文档的时候会效率比较高。nanoxml是一步解析器,一次就把文档解析完,如果文档很大的话,这无疑会耗费很大的内存。要使用kxml你可以从http://www.kxml.org 下载得到,在http://nanoxml.sourceforge.net 你可以下载nanoxml。

要使用kxml,你必须首先得到一个XmlParser实例,它用Reader作为构造器的参数:

try {
Reader r = .....;
XmlParser parser = new XmlParser( r );
}
catch( java.io.IOException e ){
// handle exception....
}

如果你的xml文档存储在String内的话你可以使用ByteArrayInputStream和InputStreamReader:

String xml = "some xml";
ByteArrayInputStream bin =
new ByteArrayInputStream( xml.getBytes() );
XmlParser parser = new XmlParser( new InputStreamReader( bin ) );

当从网上接收数据的时候可以这样:

HttpConnection conn = .....;
InputStreamReader doc =
new InputStreamReader( conn.openInputStream() );
XmlParser parser = new XmlParser( doc );

得到parser实例后我们就可以调用read方法进行解析了,read方法会返回一个ParseEvent,通过判断他的类型我们就可以解析xml了。

try {
boolean keepParsing = true;
while( keepParsing ){
ParseEvent event = parser.read();
switch( event.getType() ){
case Xml.START_TAG:
..... // handle start of an XML tag
break;
case Xml.END_TAG:
..... // handle end of an XML tag
break;
case Xml.TEXT:
..... // handle text within a tag
break;
case Xml.WHITESPACE:
..... // handle whitespace
break;
case Xml.COMMENT:
..... // handle comment
break;
case Xml.PROCESSING_INSTRUCTION:
..... // handle XML PI
break;
case Xml.DOCTYPE:
..... // handle XML doctype
break;
case Xml.END_DOCUMENT:
..... // end of document;
keepParsing = false;
break;
}
}
}
catch( java.io.IOException e ){
}

时间: 2024-10-02 09:55:35

在J2ME开发中解析XML的相关文章

ios-iPhone中解析XML遇到的问题

问题描述 iPhone中解析XML遇到的问题 新手求助,遇到了解析XML的问题: XML: <?xml version="1.0" encoding="UTF-8"?> <Books> <Book id="1"> <title_1>Circumference</title_1> <author>Nicholas Nicastro</author> <summ

java 解析xml文件-在JAVA中解析XML文件时遇上难题,向各位大虾求助。

问题描述 在JAVA中解析XML文件时遇上难题,向各位大虾求助. 在服务器进程中编写登录时出现以下错误提示: Exception in thread "Thread-0" java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl cannot be cast to javax.swing.text.Document at server.ServerThread.Lo

treeview-MFC中 解析XML文件,并用tree control 显示,如何进行对xml文件的增删改查?

问题描述 MFC中 解析XML文件,并用tree control 显示,如何进行对xml文件的增删改查? 如题,我利用tree control 显示了一个xml文件,然而不知道如何进行修改数据,就是点击了树形结构的节点,但是不知道如何定位点击的节点位置在原xml文件的位置? 解决方案 http://www.codeproject.com/Articles/11244/XML-TreeView-Control 解决方案二: simpleXML怎样解析一个xml文件,并对xml进行增删改查 过程Li

java中解析xml,要求在控制台输出但是输出的是null

问题描述 java中解析xml,要求在控制台输出但是输出的是null package pero.common.Metied; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.text.MessageFormat; import javax.xml.bind.JAXBContext; import java

Java从zip文件中解析XML数据实例

从zip文件中解析xml文件一般步骤是先解压zip文件,然后在解析xml,这里直接从zip文件中读取xml的输入流进行解析,减少I/O操作.下面是一个从zip文件中解析xml文件的示例:    代码如下 复制代码 /**  * 从zip文件中解析XML数据<br/>  * @param filePath 文件绝对路径  * @return List<?>  * @throws IOException  * @throws DocumentException  * @author 大

j2me中解析xml的问题

问题描述 在手机中如何解析xml字符串?有一个xml字符串:<?xml version="1.0" encoding="utf-8"?><message><head><messageId>20100813105618796</messageId><result>0001</result></head><body><errorMsg>消息校验错误&l

j2me中解析xml文件格式字符串报错,希望各位高手帮忙

问题描述 这是解析xml文件时报的错误,但是能正常解析,org.xmlpull.v1.XmlPullParserException:attrvaluedelimitermissing!(position:START_TAG<fontcolor='1.0'>@1:445injava.io.InputStreamReader@18b537a2)当数据只有一条时不报错误,但是数据量多时就报了比如说<?xmlversion="1.0"encoding="utf-8&

简析Java开发中的XML编程

xml|编程 XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列.Oracle系列.Inprise Borland系列等)也都把支持XML开发作为宣传口号之一 .由于笔者所从事的电子政务开发较早的引入了XML,所以尝到了许多甜头,在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制定繁锁的数据格式,利用XML数据易于表达,也利于一线开发者跟踪调试. 在XML应用中,最常用也最实用的莫过于XML文件的读写,所以笔者通过一个简单的XML文

详解Android中解析XML的方法_Android

XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能.今天就由我向大家介绍一下在Android平台下几种常见的XML解析和创建的方法. 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析器,下面,我将一一向大家详细介绍. SAX解析器: SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的.当事