誕生之日起,它就一直是業界的焦點話題之一。經過了幾年的發展,XML技術日趨成熟,現在越來越多的應用都是基於XML開發的。在Internet日益普及的今天,分布式編程日顯重要,越來越多的應用都開始向這一方向轉型。在這一領域中,XML作為一種中間的數據接口,已經顯示出其不可替代的重要性。與此同時,Java語言開發Internet分布式應用程序的潛力也被越來越多的人看好,EJB體系結構也日漸成熟。利用Java,人們可以很迅速的開發出可移植的、彈性好的、易於管理的分布式應用程序。
Java語言一直都被認為是最適合進行XML編程的語言之一。與平台無關的語言Java加上與平台無關的數據XML,確實能夠完成最為復雜且彈性最好的分布式應用。
在Java應用中引入XML,其實並不是很難,而且已經有諸多規范和諸多的類庫開發出來,以簡化Java中的XML的編程。在這些規范中,最為流行的就是SAX和DOM,後者也是W3C所推薦的標准。而支持XML的Java類庫更是不勝枚舉,除了Sun所發布的JXAP之外,還有像IBM、Microsoft等巨頭所提供的類似產品。而且,這些產品大多都是免費的,用起來不用花一分錢。所有的這些規范和類庫,已經在很大程度上簡化了XML編程的復雜系數,你只需要了解這些規范和JXAP所定義的API,就已經能夠進行XML編程了。而我們這篇文章的目的,也就是為大家介紹這些規范和API。相信讀完本文後,您就不會再認為XML編程是多麼困難的事了。
背景知識
關於XML的討論已經很多了,對於XML的看法也是見仁見智。要給XML下一個確切的定義是一件很困難的事情,但我們可以從下面四個方面來看:
1.XML是一種被設計成方便的用來在Internet上傳播的標記語言。XML與SGML兼容(確切的說是SGML的一個簡化了的子集),並且能夠很容易的在任何文本編輯器中進行浏覽和編輯。
2.XML用來定義數據的邏輯結構,用樹的方式將所有的數據組織起來,這使得XML文檔很容易理解和處理。而XML文檔的結構是通過DTD或者Schema預先定義的,這使得XML中的數據在特定的應用中都能夠有確切的含義。
3.XML是一種定義嚴格的語言,它幾乎沒有定義什麼可選的特性。這使得XML達到了最大程度的通用性,任何與XML兼容的解析器都可以對一個合法的XML文檔進行解析而不會出現任何錯誤。這樣,XML就能夠作為一種最廣義的中介,在各種平台,各種語言和各種程序中流通。
4.XML是一種用來定義數據和原數據的語法,這就使得你能夠定義數據本身。這也是XML最重要的特性之一,因為從理論上講,任何東西都可以用數據進行描敘。也就是說,由於XML提供了描敘數據的方法,因而也就具備了描敘任何事物的能力。
關於XML的應用,我們舉一個簡單的例子來看看它的威力所在。
現在的大部分網站都是用HTML編寫的。網頁設計師們精心設計的網頁,能夠在Web浏覽器上很漂亮的顯示出來,但是如果想把這些網頁所包含的內容重新設計在一本書中的話,顯然,浏覽器上的漂亮內容就不能很方便的在書中體現出來了。我們知道,HTML是一種結構性很差的語言,它將顯示和內容緊密的結合在一起,要將內容有選擇的從Html文件中分離出來是非常困難的,特別是在那些設計精美的網頁中。這時候,或許唯一的辦法就是重新進行設計了。但是,XML的出現為解決這種問題提供了一種良好的解決方案。
因為XML只是定義數據,它並不關心數據是如何顯示的,所以用XML設計出的網站其內容和顯示是分離的。一般的網頁是通過XSLT對給定的XML文檔進行變換之後生成的。現在我們要將網站的內容放在一本書中,只需要重新定義XSLT,給出變化規則,就可以將內容完美的再現在另外的一種形式中了。
上面所講述的只是XML應用的一個重要方面,實際上現在XML的應用遠遠不止如此,很多協議比如SOAP,都是基於XML的。
下面的內容,就是具體的XML編程了。由於本文假定您已對Java語言(或者其它面向對象的語言)有了一定的了解,因而對一些關於語言的細節問題,就不再贅述了。
http://www.ccidnet.com/tech/code/011008/jxsource.zip