分享
 
 
 

在以CLDC?基?的架?上分析XML

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

越?越多的?用程式使用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) 去追?您在文件的哪一?地方。

■ ?如何使用 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 物件:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有