您的位置:软件 > 开发者网络 > 开发工具 > 移动开发 > 正文
在以CLDC为基础的架构上分析XML
[文章信息]
作者:
时间:2002-07-16
出处:天极论坛
责任编辑:
[文章导读]
越来越多的应用程序使用XML交换讯息。譬如,以 CLDC 为基础的应用程序 需要去处理 XML 文件......
advertisement
热点推荐
· 专业设计的魅力:精确的定位
· 在金山文字中输入文字
· 认识磁盘
· 小小的精彩Flash:广告作品
· 小小的精彩Flash:过关斩将II
[正文]

上一页  1 2 3  下一页

  该如何使用 kXML 呢?

  从 http://www.kxml.org/ 下载 kXML 原始码,并且将 kXML 类别包含进您的应用程序。并不是所有的类别都是需要的,所以只要下载包含最小 kXML 的 ZIP 檔。在安装完这个档案后,新增下面的引入陈述到您的程序中。

import org.kxml.*;
import org.kxml.parser.*;

  当您准备好去分析一份文件时,产生一个 XmlParser 类别实体,传入一个字符 (character) 流当唯一的参数。

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

  如果您的文件是以字符串被储存,举例来说,您可以借着转换字符串成为一个字节 (byte) 数组来读取它,然后,结合 InputStreamReader 和 ByteArrayInputStream:

// 读取字符串 (exception handling omitted)
String xml = "some xml";
ByteArrayInputStream bin =
new ByteArrayInputStream( xml.getBytes() );
XmlParser parser = new XmlParser( new InputStreamReader( bin ) );

  然而,更可能发生的情节是,从网络接收一份文件,举例来说,在 CLDC 的通常连结架构 (GCF),您使用 MIDP 内建支持 HTTP 的类别来做这件事,然后您会使用 GCF 回传的输入流 (input stream),并且转换它成为字符流 (character stream):

// Read from web (exception handling omitted)
HttpConnection conn = .....;
InputStreamReader doc =
new InputStreamReader( conn.openInputStream() );
XmlParser parser = new XmlParser( doc );

  析器被产生后,您呼叫它的 read 方法去读取文件分开的区块。read 方法对文件的每一个组件回传一个 ParseEvent 对象:

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 ){
}

  ParseEvent 类别为回传的组件信息定义了许多方法。getType 方法,举例来说,回传组件的型别,像是它是否是一个卷标 (tag) 的开头、一个批注等。其它的方法提供了额外的讯息,像是一个卷标的内文或一个卷标的属性。当 END_DOCUMENT 事件被触发时,分析器便停止运作。

  kXML 使得对一个文件递归下降的分析方式变的相当容易,分析器的状态是被呼叫方法维持,递归的反映到一个新的分析事件。在简单的情况下,您可以利用这个方法来保持追踪您最后一个看过的卷标。

  使用 NanoXML,必须下载一些原始码。官方的 NanoXML 网站是 http://nanoxml.sourceforge.net/。

  一个修改过的 NanoXML 版本,能够与 CLDC 并存 (原本的 NanoXML 只适合以 J2SE 为基础的系统) 可以在 http://www.ericgiguere.com/nanoxml 找到。就像 kXML,必须将 NanoXML 包含到您的程序中,然后新增下面的引入陈序到您的程序:

  import nanoxml.*;

  去分析一份文件,产生一个 kXMLElement 类别的实体,并且选择使用 parseFromReader、parseString 或 parseCharArray 其中之一:

  由于 NanoXML 是一个单一步骤的分析器,它分析全部的文件,并且转换它成为一个树状的XML组件。树状图的根部是您所产生的 kXMLElement 实体,且每一个树状图的节点是另一个 kXMLElement 实体。您可以使用像是 getChildren、getTagName 和 getContents 的方法穿越这棵树。


上一页  1 2 3  下一页

·"WAP天极之IT新闻资讯,50万元等你拿"    ·天极WAP之游戏狂图,50万元等你下载

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容阅读排行榜
  • [配置推荐]4100元高性价比配置
  • 软件频道电脑应用多媒体教程
  • 专业设计的魅力:精确的定位
  • 在金山文字中输入文字
  • 认识磁盘
  • 小小的精彩Flash:广告作品
  • 小小的精彩Flash:过关斩将II
  • 11.19精选 闪客五周年作品展
  • Advertisement