XML在數據傳輸哪些方面會比JSON有優點,在哪些領域更加適合?

XML 跟 JSON 的聖戰,或許會成爲自 vim/emacs 聖戰,cli/gui 聖戰等等聖戰以來的又一個聖戰,而全部的聖戰大抵都不會有結果,由於每方都有各自的道理,誰都不服誰。

在我看來,XML 更適合數據定義,數據存儲。它對數據的表達使得這個數據脫離你程序的上下文仍然存在乎義而且能夠被解讀。因此 XML 適合做爲配置文件,以及數據存儲,存盤文件格式等等。

JSON 更適合數據傳輸。對於傳輸而言,雙方必然須要遵循協商好的協議,於是 JSON 對數據的表達並不須要在數據傳輸的雙方之外仍然具備可解讀的意義,只要傳輸的雙方能讀懂便可。因此 json 更適合做爲數據傳輸雙方的通訊協議。

若是把用途侷限在數據傳輸這個領域,則 XML 沒有任何優點。惟一可能的優點或許是,若是你的數據原本就是使用 XML 組織和定義的,直接使用 XML 傳輸會更方便。

數據傳輸跟數據存儲的側重點原本就不一樣,即使是 UNICODE 對於傳輸與存儲也是兩種不一樣的編碼,因此我的以爲沒有必要始終執着於把一個更適合數據存儲的格式用於數據傳輸。json

 

**************************************************************************************************************************************vim

 

若是談數據傳輸,XML 相對 JSON 沒有任何優點,從一開始就是如此。

不少當下的 XML 支持者可能都忘了,XML 一開始不是爲網絡傳輸設計的,而是爲了替代 HTML。因此它纔會如此強調結構化(相對 HTML 4 的混亂結構而言容易分析)和格式中內建編碼信息(便於跨國數據交換)。可是 XML 誕生後在這方面一直不溫不火,也就在 XHTML 中略有建樹。其它的應用雖然也有,好比 MathXML、XSLT 之類,也都不算被普遍應用。直到後來 RSS 和 ePub 流行,XML 纔算找回來一些本來的方向。

XML 開始流行的具體歷史已經難以考證,只知道是乘了 Java 企業應用和 DOM (文檔對象模型)標準的東風。Java 企業應用中 XML 常常被用來作以下用途:配置文件和傳輸格式(SOAP,簡單對象傳輸協議)。隨着 Java 應用的增長,XML 的應用也在拓寬,但整體上超不出這兩方面。

若是隻是做爲鍵值對類型配置文件的格式,XML 並不優秀,它的問題就是包含了太多對真正數據傳輸無用的東西,用計算機世界的術語,就是 Payload 不夠高。好比處處存在的尖括號,好比層級式的標籤結構,好比 DTD/Schema。最基本的問題在哪裏?帶寬。這裏的每個字節都會成爲傳輸帶寬的負擔。惟一的好處是 DOM 解析器幾乎處處都是,但相對於 JSON 來講,這個優點也不復存在。

總體上看,我是樂於見到 JSON 代替 XML 的。不是由於 XML 失勢,而是整個程序開發世界終於能夠以一種理性的眼光看待手中的工具了。XML 自有它的用途,好比 ePub,好比 SVG。固然它也仍然能夠用於數據傳輸。網絡

 

 

references:工具

http://www.zhihu.com/question/20764767ui

相關文章
相關標籤/搜索