三年前就已經開始學習和瞭解XML了,可到如今對這個XML也沒有一個清醒的認識。以前聽同事說,XML是一種可以定義其它語言的語言。所以也就一直那樣認為了。而在實際的使用中,又會有什麼必要自己去定義一種語言呢?
XML可以取代小的案頭資料庫。這是最近的認識,它的強大功能在於資料關係的平台及語言無關性,它的標準可以讓XML檔案在任何支援XML的程式中使用。然而,又聽到這樣的問題:XML的效率太低了。而對於今天這樣速度如此之快的PC機而言,可以在0.幾秒鐘之內就載入數十K甚至數百K的XML檔案時,這似乎不是一個問題了。
然而同事的項目在PDA上卻無法運作了,因為數K的檔案在PDA上載入要花上幾分鐘。而且還是在C++下的。分析問題的主要原因就是對XML檔案的DOM對象的全文載入,使得記憶體不夠而無法完成任務。就算是XML檔案本身不大,而分析它的結構,操作它的資料元素,這都是一件很頭疼的事。於是大家又討論到 .net下來處理XML檔案,因為大家覺得在.net下對XML的支援可能會好一些。
我前幾天才認真的看了一下關於XML的書,這幾天也在網上找到了一些文章,但大多數的文章就是簡單的XML結構。一個例子,看了數百次的例子,無非就是一個Person的執行個體,用什麼Name,age等來定義一個資料結構。然而我也實在是無法明白它在我們的項目裡會起一個什麼樣的角色。如果說因為XML檔案的資料結構統一性,可讓我的同事的項目使用我的XML檔案,而XML檔案的資料結構還是我們自己定義的一個私人結構。那這幾乎沒有什麼意義的,因為我完全可以不用什麼XML,而用其它任何的檔案結構,只在我告訴這個結構,讓同事來分析並處理它就行了。正如很早以前我們用的一個文本資料庫檔案一樣。
我不甘心XML就是這樣的一個結局,於是花了一些時間在XML的學習上。試圖找到一種XML與我們所開發的項目之間的關係。而這裡正是我所找到的一點可以讓自己高興一下的資訊:http://www.microsoft.com/china/MSDN/library/data/xml/dnsqlpro04L.mspx
這裡一篇講解XML架構的文章,它說明了XML到底是一個什麼結構,為什麼它可以取代案頭資料,為什麼它可以在不同的開發環境裡共同使用。我覺得正真讓我理解到它的本質的,還是這樣的一張圖:
圖 2. OO 與 XML 概念
這正是我所想要的,而這樣結構,就使得一方面我們以前所做的工作都是有效,而且可以在以前的基礎上,增加XML功能。
這裡的架構類型,就是XML Schema,這一內容我和同事都討論過,然而他們好像並不大喜歡XML Schema,我不知道為什麼,然而如果在不知道XML Schema的時候,想用好XML真的是很困難的,這也就是為什麼很多人在最開始使用XML的時候都會遇到我前面所提到的一些問題一樣:不是覺得沒有必要,就是覺得效率不高,或者覺得.net下的架構太複雜不想用。然而看到上面這張圖以後,還會這樣想嗎?我在看到XML的這種結構時,真的太興奮了。
相信讀者可以在這個頁面上找到和我一樣想要的東西。
http://www.microsoft.com/china/MSDN/library/data/xml/dnsqlpro04L.mspx