使用Java與XML進(jìn)行編程
2024-09-05 00:23:40
供稿:網(wǎng)友
從xml誕生之日起,它就一直是業(yè)界的焦點(diǎn)話題之一。經(jīng)過了幾年的發(fā)展,XML技術(shù)日趨成熟,現(xiàn)在越來越多的應(yīng)用都是基于XML開發(fā)的。在Internet日益普及的今天,分布式編程日顯重要,越來越多的應(yīng)用都開始向這一方向轉(zhuǎn)型。在這一領(lǐng)域中,XML作為一種中間的數(shù)據(jù)接口,已經(jīng)顯示出其不可替代的重要性。與此同時(shí),java語言開發(fā)Internet分布式應(yīng)用程序的潛力也被越來越多的人看好,EJB體系結(jié)構(gòu)也日漸成熟。利用Java,人們可以很迅速的開發(fā)出可移植的、彈性好的、易于治理的分布式應(yīng)用程序。
Java語言一直都被認(rèn)為是最適合進(jìn)行XML編程的語言之一。與平臺無關(guān)的語言Java加上與平臺無關(guān)的數(shù)據(jù)XML,確實(shí)能夠完成最為復(fù)雜且彈性最好的分布式應(yīng)用。
在Java應(yīng)用中引入XML,其實(shí)并不是很難,而且已經(jīng)有諸多規(guī)范和諸多的類庫開發(fā)出來,以簡化Java中的XML的編程。在這些規(guī)范中,最為流行的就是SAX和DOM,后者也是W3C所推薦的標(biāo)準(zhǔn)。而支持XML的Java類庫更是不勝枚舉,除了Sun所發(fā)布的JXAP之外,還有像IBM、Microsoft等巨頭所提供的類似產(chǎn)品。而且,這些產(chǎn)品大多都是免費(fèi)的,用起來不用花一分錢。所有的這些規(guī)范和類庫,已經(jīng)在很大程度上簡化了XML編程的復(fù)雜系數(shù),你只需要了解這些規(guī)范和JXAP所定義的API,就已經(jīng)能夠進(jìn)行XML編程了。而我們這篇文章的目的,也就是為大家介紹這些規(guī)范和API。相信讀完本文后,您就不會(huì)再認(rèn)為XML編程是多么困難的事了。
背景知識
關(guān)于XML的討論已經(jīng)很多了,對于XML的看法也是見仁見智。要給XML下一個(gè)確切的定義是一件很困難的事情,但我們可以從下面四個(gè)方面來看:
1.XML是一種被設(shè)計(jì)成方便的用來在Internet上傳播的標(biāo)記語言。XML與SGML兼容(確切的說是SGML的一個(gè)簡化了的子集),并且能夠很輕易的在任何文本編輯器中進(jìn)行瀏覽和編輯。
2.XML用來定義數(shù)據(jù)的邏輯結(jié)構(gòu),用樹的方式將所有的數(shù)據(jù)組織起來,這使得XML文檔很輕易理解和處理。而XML文檔的結(jié)構(gòu)是通過DTD或者Schema預(yù)先定義的,這使得XML中的數(shù)據(jù)在特定的應(yīng)用中都能夠有確切的含義。
3.XML是一種定義嚴(yán)格的語言,它幾乎沒有定義什么可選的特性。這使得XML達(dá)到了最大程度的通用性,任何與XML兼容的解析器都可以對一個(gè)合法的XML文檔進(jìn)行解析而不會(huì)出現(xiàn)任何錯(cuò)誤。這樣,XML就能夠作為一種最廣義的中介,在各種平臺,各種語言和各種程序中流通。
4.XML是一種用來定義數(shù)據(jù)和原數(shù)據(jù)的語法,這就使得你能夠定義數(shù)據(jù)本身。這也是XML最重要的特性之一,因?yàn)閺睦碚撋现v,任何東西都可以用數(shù)據(jù)進(jìn)行描敘。也就是說,由于XML提供了描敘數(shù)據(jù)的方法,因而也就具備了描敘任何事物的能力。
關(guān)于XML的應(yīng)用,我們舉一個(gè)簡單的例子來看看它的威力所在。
現(xiàn)在的大部分網(wǎng)站都是用Html編寫的。網(wǎng)頁設(shè)計(jì)師們精心設(shè)計(jì)的網(wǎng)頁,能夠在Web瀏覽器上很漂亮的顯示出來,但是假如想把這些網(wǎng)頁所包含的內(nèi)容重新設(shè)計(jì)在一本書中的話,顯然,瀏覽器上的漂亮內(nèi)容就不能很方便的在書中體現(xiàn)出來了。我們知道,HTML是一種結(jié)構(gòu)性很差的語言,它將顯示和內(nèi)容緊密的結(jié)合在一起,要將內(nèi)容有選擇的從HTML文件中分離出來是非常困難的,非凡是在那些設(shè)計(jì)精美的網(wǎng)頁中。這時(shí)候,或許唯一的辦法就是重新進(jìn)行設(shè)計(jì)了。但是,XML的出現(xiàn)為解決這種問題提供了一種良好的解決方案。
因?yàn)閄ML只是定義數(shù)據(jù),它并不關(guān)心數(shù)據(jù)是如何顯示的,所以用XML設(shè)計(jì)出的網(wǎng)站其內(nèi)容和顯示是分離的。一般的網(wǎng)頁是通過XSLT對給定的XML文檔進(jìn)行變換之后生成的。現(xiàn)在我們要將網(wǎng)站的內(nèi)容放在一本書中,只需要重新定義XSLT,給出變化規(guī)則,就可以將內(nèi)容完美的再現(xiàn)在另外的一種形式中了。
上面所講述的只是XML應(yīng)用的一個(gè)重要方面,實(shí)際上現(xiàn)在XML的應(yīng)用遠(yuǎn)遠(yuǎn)不止如此,很多協(xié)議比如SOAP,都是基于XML的。
下面的內(nèi)容,就是具體的XML編程了。由于本文假定您已對Java語言(或者其它面向?qū)ο蟮恼Z言)有了一定的了解,因而對一些關(guān)于語言的細(xì)節(jié)問題,就不再贅述了