給 XML 初學者

2021-03-31 08:56:31 字數 2150 閱讀 1495

【簡 介】

差不多每天都有人問「什麼是 xml」,「xml 能做什麼」,「xml 能不能替我做這個」,「xml 會取代什麼」 等等諸如此類的問題。由於最近一段時間稍微對 xml 使用了一下,我來談談自己的感覺。這些經驗都很淺顯,任何乙個用過 xml 的人都有,並且見仁見智,只不過我算剛剛走過這段路,對自己一開始的困惑,誤解還記得清,所以拿出來和大家分享一下。

差不多每天都有人問「什麼是 xml」,「xml 能做什麼」,「xml 能不能替我做這個」,「xml 會取代什麼」 等等諸如此類的問題。由於最近一段時間稍微對 xml 使用了一下,我來談談自己的感覺。這些經驗都很淺顯,任何乙個用過 xml 的人都有,並且見仁見智,只不過我算剛剛走過這段路,對自己一開始的困惑,誤解還記得清,所以拿出來和大家分享一下。

我覺得初學者可能會走近的誤區:  

1. xml 是不是 html 的取代者  

不是。寫得好的 html 應該是乙個 well-formed 的 xml 文件,其他方面最好不要把他們放在乙個水平線上比較  

2. xml 是不是資料庫的取代者  

不是。  

3. xml 是不是...的取代者  

都不是。

這個結論可能聽上去很滑稽:xml 是非常非常重要的東西,但它什麼都取代不了。但這並不奇怪,有人把它比做 ascii 標準,他們是一切一切的基礎,但並沒有(也不需要)取代什麼。(但是就如同 ascii 取代了一些沒有成大器的字符集定義,xml 也會取代你在應用中自己定義的一些資料傳輸規範,但沒有什麼特別主流的東西。)  

剛開始學 xml (或者說沒開始學之前)的時候最愛問的乙個問題肯定是:使用 xml 能給我帶來什麼好處?

我覺得從某種角度上說,使用 xml 有些象使用 oo 物件導向:  

- 你可以用它,你也可以不用它。

- 如果你的應用非常簡單,用它不一定方便,沒準兒用了效果還會更差。

- 和其他實際東西比如資料庫,mts,web server比起來,它更像是乙個概念,一種方法

- 專案越大,它的發揮餘地越大,作用越大。

- 一旦真正理解後,哪怕不用 xml parser,也不妨礙你使用這個概念,如同可以拋開特定語言使用 oo。

- ......  

好像更抽象,更沒譜兒了吧。

那就隨便舉個例子。比如你本來想在 bbs 應用中的兩個模組之間傳一些資料:  

- 發言人

- 密碼

- 標題

- 內容  

使用四個引數是不太現實的,因為你隨時可能要擴充套件功能,比如再加上個

- 表情符號

等等  

不可能每次加個功能,就重新定義一遍函式。

所以最簡單的方法是把他們合併起來作為乙個引數傳遞給函式。

在有 xml 之前,你可能會使用分隔符:

str = "發言人=張三;密碼=**;標題=abc;內容=xyz"

到 server 那邊使用 dictionary 或 collection 或 split 等等方法把他們拆開。

(當然可以自己定義物件啦,結構啦等等,但多數情況下還得是純字串--比如另乙個模組不是自己開發的。)  

這種傳遞字串的方法有幾個問題,總結成兩個最大的方面就是:  

1. 正確的解析它很麻煩。(比如標題正好是「發言人=張三;」怎麼辦)

2. 是平面的,沒有層次型結構  

你可以寫些函式來解決這些問題,比如確保裡面肯定有「發言人」,「密碼」等等;再寫些函式做一下字元轉義,再寫些函式製造出層次性的效果...  

夠了!咱還是用 xml 吧。在我目前淺顯的認識裡:  

- xml 是用來傳遞資料的

- xml 讓這些資料有了結構 -- 乙個樹型結構

- xml 有全套的操作這種結構的方法

- xml 規範(或者說的實際點,xml parser)幫你確定你建立的字串是合法的

- xml 規範(或者說的實際點,xml parser)中有辦法驗證這個合法性

- 對於拿到這個字串的 server ***ponent 來說,可以用 xml 中現成的方法來操作它,

這就是 xpath, pattern,類似於 t-sql 語句。(但記住 xml 是樹型結構的)

- xslt 使用 xpath 對 xml 進行轉換(類似於 dts),其中一種特例是把 xml 轉換成 html 輸出。

XML初學者必讀

差不多每天都有人問 什麼是 xml xml 能做什麼 xml 能不能替我做這個 xml 會取代什麼 等等諸如此類的問題。由於最近一段時間稍微對 xml 使用了一下,我來談談自己的感覺。這些經驗都很淺顯,任何乙個用過 xml 的人都有,並且見仁見智,只不過我算剛剛走過這段路,對自己一開始的困惑,誤解還...

XML初學者必讀

差不多每天都有人問 什麼是 xml xml 能做什麼 xml 能不能替我做這個 xml 會取代什麼 等等諸如此類的問題。由於最近一段時間稍微對 xml 使用了一下,我來談談自己的感覺。這些經驗都很淺顯,任何乙個用過 xml 的人都有,並且見仁見智,只不過我算剛剛走過這段路,對自己一開始的困惑,誤解還...

給初學者的建議

一名初學者,首先要找一本好的入門書籍 平台裡有推薦 把程式結構 資料型別,陣列 函式和結構體 這幾個部分了解 了之後,就可以 寫 程式了。千萬不要把書看的太細緻,那樣的話會覺得程式設計太繁瑣,不要背參考書式的學習。就像乙個小孩要學說話,他需要模仿和試錯,不斷的矯正,最終會很好的表達,如果一開始讓他把...