越来越多的应用程序使用XML交换讯息。譬如,以 CLDC 为基础的应用程序 需要去处理 XML 文件,甚至连 HTML 网页也将会很有可能转换成为一个以 XML 为基础的格式。而这意味着从一个网页服务器连结一张网页而取出资料将会需要分析 XML 的技术。
XML就是「可扩展标记语言」,是一种轻便的、以文字为基础的方法去呈现结构化的资料。
越来越多的应用程序使用 XML 交换讯息,甚且,在一些情况下,您以 CLDC 为基础的应用程序 (这些是指在以 CLDC 为基础的架构上执行的,像是微小的手机装置之类的) 需要去处理 XML 文件。之后,甚至连 HTML 网页也将会很有可能转换成为一个以 XML 为基础的格式,称为 XHTML。这意味着从一个网页服务器连结一张网页而取出资料将会需要分析 XML 的技术。
寻找一个以 JAVA 为基础的 XML 分析器不难,尤其是自从有好几个以 XML 为基础的的提倡开始被定义为 Java 处理程序的一部分。然而,大部分的 XML 分析器并不支持在 CLDC 所提供的有限资源环境下运作。这些分析器不是使用了太多的内存就是使用在 CLDC 下不能运作的 J2SETM 类别。
然而,在这有两个能在 CLDC 环境下运作的开放原始码 XML 分析器 ── kXML 和 NanoXML。他们二者的长处有些不同 ── 本文将会讨论他们两者,并且提供您如何去决定哪一个是最适合您的程序需求。然而,您也应该考虑是否选择 XML,因为 XML 文件是非常冗长的。
如果您能够控制服务器端,去使用您自己的二进制的格式去交换资料才是有意义的。
如果一个以 Java 为基础的客户端与一个以 Java 为基础的服务器端相互沟通,这是相当容易的。在这个实例里,使用 DataInputStream 和 DataOutputStream 类别,以轻便的方法读写取资料。
基本的 XML 分析器型态
基本的 XML 分析器型态有两种:确认性的和非确认性的。
一个确认性的分析器透过一个文件型别定义或概要 (schema) 确认一份 XML 文件,以确保这份文件的内容是程序所预期的。这个要求将会减低处理的速度。一个非确认性的分析器跳过这个步骤,只保证这个 XML 文件是合乎基本格式的 (well-formed),换而言之,它遵守一般 XML 文件必须遵守的规则。kXML 和 NanoXML 二者都是非确认性的分析器。
非确认性的分析器
XML 分析器也能以他们如何处理和呈现 XML 文件来区分。
NanoXML 是一个单一步骤 (single-step) 分析器。给定一份文件,NanoXML 以一个单一的运作分析它,并将这份文件以一个树状的结构传回。kXML,相较之下,是一个多步骤的 (multi-step) 的分析器 ── 一次分析文件的一块区域。 这两种方法各有利弊,如果您正在处理一份庞大的文件,单一步骤的方法使用较多的内存,因为全部的文件都储存在内存中。但是单一步骤的方法将较有效率,如果您需要穿越这份文件很多次。多步骤的方法能够较轻易的处理庞大的文件,但是您必须做较多的簿记 (bookkeeping) 去追踪您在文件的哪一个地方。