寫給XML初學者的一些話

2022-03-24 04:02:04 字數 1971 閱讀 2413

差不多每天都有人問「什麼是 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 component 來說,可以用 xml 中現成的方法來操作它,這就是 xpath, pattern,類似於 t-sql 語句。(但記住 xml 是樹型結構的)

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

C 初學者的一些牢騷

以下是乙個c 新學者的一些看法。最近為了學軟工,現學了c 然後發現有好有壞的東西 1 oo思想,c 中得到充分的體現,到處都要是類,雖然我沒怎麼繼承是吧。好在int,byte 都是類,很好很強大。許多函式都內建再後面,很強大。靈活性只能說一般。型別間轉換還是比較繁瑣的過程,timespan個人覺得還...

初學者 Linux 一些簡單問題

linux 初學 linux系統 unbuntu安裝好後一般是沒有gcc編譯器的,因此我們需要先配置好gcc,才能對寫好的.c檔案進行編譯。安裝時我們用apt命令,這裡需要許可權,命令如下 sudo apt install gcc sudo apt install vim 建立helloworld....

給python初學者的一些建議

安裝anaconda python並配好路徑 安裝vscode,安裝python外掛程式 plance外掛程式 jupyter外掛程式等 嘗試conda 建立虛擬環境,一般在虛擬環境中操作 在學習語法 做實驗的時候,建議先通過notebook來嘗試 可以先看廖雪峰的教程 一開始先看到物件導向就行,感...