![比較XML與JSON在Web中的應(yīng)用_第1頁(yè)](http://file4.renrendoc.com/view/e9be07a215e66a246dce2ea8d704697b/e9be07a215e66a246dce2ea8d704697b1.gif)
![比較XML與JSON在Web中的應(yīng)用_第2頁(yè)](http://file4.renrendoc.com/view/e9be07a215e66a246dce2ea8d704697b/e9be07a215e66a246dce2ea8d704697b2.gif)
![比較XML與JSON在Web中的應(yīng)用_第3頁(yè)](http://file4.renrendoc.com/view/e9be07a215e66a246dce2ea8d704697b/e9be07a215e66a246dce2ea8d704697b3.gif)
![比較XML與JSON在Web中的應(yīng)用_第4頁(yè)](http://file4.renrendoc.com/view/e9be07a215e66a246dce2ea8d704697b/e9be07a215e66a246dce2ea8d704697b4.gif)
![比較XML與JSON在Web中的應(yīng)用_第5頁(yè)](http://file4.renrendoc.com/view/e9be07a215e66a246dce2ea8d704697b/e9be07a215e66a246dce2ea8d704697b5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、比擬XML與JSON在Web中的應(yīng)用摘要:隨著越來(lái)越多的AJAX應(yīng)用的出現(xiàn),XL和JSN成為主要的數(shù)據(jù)交換格式。選擇合適的數(shù)據(jù)交換格式對(duì)今后的數(shù)據(jù)轉(zhuǎn)換和應(yīng)用程序性能至關(guān)重要。通過(guò)比照兩種格式的語(yǔ)言特性、編程語(yǔ)言支持、運(yùn)行效率、平安性以及應(yīng)用范圍和學(xué)習(xí)難易程度,并輔以事例及代碼片段,說(shuō)明JSN比XL更加合適在eb應(yīng)用中作為數(shù)據(jù)交換格式使用。關(guān)鍵詞:數(shù)據(jù)交換格式XLJSNAJAX1概述1.1XL與JSN簡(jiǎn)介XL1是ExtensiblearkupLanguage的縮寫(xiě),中文名稱是可擴(kuò)展標(biāo)記語(yǔ)言,它源自標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言SGL,XL是從1995年開(kāi)場(chǎng)有其雛形,并向3提案,而在1998年二月發(fā)布為3的標(biāo)準(zhǔn)
2、XL1.0。XL是一種格式統(tǒng)一,跨平臺(tái)的語(yǔ)言,早已成為業(yè)界公認(rèn)的標(biāo)準(zhǔn)。XL使用元素和屬性來(lái)描繪數(shù)據(jù)。在數(shù)據(jù)傳送過(guò)程中,XL始終保存了諸如父/子關(guān)系這樣的數(shù)據(jù)構(gòu)造。幾個(gè)應(yīng)用程序可以共享和解析同一個(gè)XL文件,不必使用傳統(tǒng)的字符串解析或拆解過(guò)程。相反,普通文件不對(duì)每個(gè)數(shù)據(jù)段做描繪(除了在頭文件中),也不保存數(shù)據(jù)關(guān)系構(gòu)造。使用XL做數(shù)據(jù)交換可以使應(yīng)用程序更具有彈性,因?yàn)榭梢杂梦恢?與普通文件一樣)或用元素名(從數(shù)據(jù)庫(kù))來(lái)存取XL數(shù)據(jù)。JSN2(JavaSriptbjetNtatin)是一種輕量級(jí)的數(shù)據(jù)交換格式,易于閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成。它基于JavaSriptPrgraingLangu
3、age,StandardEA-2623rdEditin-Deeber1999的一個(gè)子集。JSN采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于語(yǔ)言家族的習(xí)慣包括,+,#,Java,JavaSript,Perl,Pythn等。這些特性使JSN成為理想的數(shù)據(jù)交換語(yǔ)言。JSN建構(gòu)于兩種構(gòu)造:名稱/值對(duì)的集合和值的有序列表。可以用JSN傳輸一個(gè)簡(jiǎn)單的String,Nuber,Blean,也可以傳輸一個(gè)數(shù)組,或者一個(gè)復(fù)雜的bjet對(duì)象。1.2XL和JSN范例假定已經(jīng)存在一個(gè)Eplyee類,其有4個(gè)屬性:Nae,Title,Phne和Eail。下面分別用XL和JSN表示這個(gè)類的一個(gè)實(shí)例。1.2.1XLJa
4、k721jakhtail.1.2.2JSNNae:Jak,Title:develper,Phne:721,Eail:jakhtail.2使用編程語(yǔ)言操作XL和JSN2.1XL與JSN在工程中的使用方法作為數(shù)據(jù)交換格式,XL和JSN具有語(yǔ)言無(wú)關(guān)性的特點(diǎn),可以在異構(gòu)的應(yīng)用程序之間傳遞數(shù)據(jù)。在eb工程中,使用XL和JSN傳輸數(shù)據(jù)的過(guò)程根本如下所述。2.1.1閱讀器使用標(biāo)準(zhǔn)JavaSript語(yǔ)法創(chuàng)立對(duì)象。把對(duì)象轉(zhuǎn)換成JSN或者XL字符串。通常以Ajax懇求方式發(fā)送字符串到效勞器。2.1.2效勞器解析收到的JSN或XL字符串,并創(chuàng)立和裝配一個(gè)類實(shí)例。執(zhí)行相關(guān)業(yè)務(wù)邏輯。創(chuàng)立新的對(duì)象來(lái)存儲(chǔ)要返回客戶端的數(shù)據(jù)
5、,把這個(gè)對(duì)象轉(zhuǎn)換成JSN或XL字符串并返回到閱讀器。2.1.3閱讀器使用JavaSript解析收到的JSN或XL字符串,并將其轉(zhuǎn)換為預(yù)定義的對(duì)象。最后使用該對(duì)象完成對(duì)頁(yè)面元素的更新。由于Javasript在eb應(yīng)用中扮演重要角色,在接下來(lái)的兩小節(jié)將分別描繪如何使用Javasript和其他編程語(yǔ)言對(duì)XL和JSN進(jìn)展操作。2.2使用Javasript解析XL和JSN假如要使用Javasript解析XL需要使用XLD和編寫(xiě)一定量的代碼實(shí)現(xiàn)將文本轉(zhuǎn)變?yōu)橐粋€(gè)Javasript對(duì)象。而JSN那么可以通過(guò)簡(jiǎn)單的eval()函數(shù)將JSN輕松轉(zhuǎn)變?yōu)橐粋€(gè)Javasript對(duì)象。當(dāng)然,也可以使用jsn.js實(shí)現(xiàn)這種
6、轉(zhuǎn)變。通過(guò)下表中列出的實(shí)例代碼,很明顯,無(wú)論是使用eval函數(shù)還是使用jsn.js,使用Javasript解析JSN是非常簡(jiǎn)單的。2.2.1Javasript解析XLvarxlD;if(ind.AtiveXbjet)xlD=neAtiveXbjet(irsft.XLD);xlD.asyn=false;xlD.ladXL(xlString);elseif(duent.ipleentatinduent.ipleentatin.reateDuent)varbjDParser=neDParser();xlD=bjDParser.parseFrString(xlString,text/xl);2.2.2
7、使用eval函數(shù)解析JSNvarstr=nae:Jak,title:develper,phne:721,eail:jakhtail.;varbj=eval(+str);2.2.3使用jsn.js解析JSNvarstr=nae:Jak,title:develper,phne:721,eail:jakhtail.;varbj=str.parseJSN();2.3使用其他編程語(yǔ)言由于XL使用的廣泛,幾乎所有的編程語(yǔ)言都對(duì)XL有很好的支持。操作XL的技術(shù)也是多種多樣,除了最初的SAX和D外,后續(xù)又參加了XPath可以針對(duì)XL進(jìn)展查詢,XSLT可以將XL轉(zhuǎn)換為其他的文檔格式。JSN對(duì)于XL來(lái)說(shuō),可以說(shuō)是
8、一個(gè)新惹事物,操作JSN的技術(shù)還不是很多。但是.jsn.rg提供了很多主流編程語(yǔ)言的開(kāi)發(fā)包。利用這些開(kāi)發(fā)包,可以實(shí)現(xiàn)對(duì)象與JSN之間互相轉(zhuǎn)換。下面的代碼演示了如何利用#FastJsn開(kāi)發(fā)包實(shí)現(xiàn)Eplyee對(duì)象與JSN之間的互相轉(zhuǎn)換。Eplyeeinstane中國(guó)論文聯(lián)盟=neEplyee();轉(zhuǎn)貼于論文聯(lián)盟.ll.論文聯(lián)盟.LL.編輯。instane.Nae=Jak;instane.Title=Develper;instane.Phne=721;instane.Eail=Jakhtail.;stringjsnText=string.Epty;jsnText=fastJSN.JSN.Instan
9、e.TJSN(instane);Eplyeebj=fastJSN.JSN.Instane.Tbjet(jsnText)asEplyee;3XL和JSN的特性比擬3.1設(shè)計(jì)理念XL利用標(biāo)記語(yǔ)言的特性提供了絕佳的延展性如XPath,而JSN的重點(diǎn)在于數(shù)據(jù)的交換。3.2學(xué)習(xí)難度假定我們是XL和JSN的初學(xué)者,無(wú)論是文檔的構(gòu)建還是解析,JSN是比擬容易的。因?yàn)镴SN的構(gòu)造更類似于對(duì)象,而解析的代碼又很簡(jiǎn)單。而XL那么相對(duì)復(fù)雜,除了XL本身,開(kāi)發(fā)者還需要學(xué)習(xí)XPath,XLShea,XSLT,XLNaespaes,D和SAX等相關(guān)知識(shí)。而對(duì)于可讀性,我認(rèn)為是因人而異的。作為Javasript開(kāi)發(fā)者,JS
10、N的可讀性比XL好。而作為早已熟悉XL的開(kāi)發(fā)者,可能更習(xí)慣于閱讀樹(shù)狀構(gòu)造的XL?,F(xiàn)有的閱讀器都可以將一個(gè)XL文檔展示為一個(gè)樹(shù)狀構(gòu)造。而借助一些閱讀器的插件比方hre的JSNFratter,JSN也同樣可以在閱讀器中展示為樹(shù)狀構(gòu)造。3.3數(shù)據(jù)類型XL本身并不包含數(shù)據(jù)類型的概念,但是可以通過(guò)XLShea來(lái)定義數(shù)據(jù)類型。JSN是提供數(shù)據(jù)類型的支持,并且通過(guò)使用對(duì)象和數(shù)組可以表現(xiàn)構(gòu)造化數(shù)據(jù)。3.3.1數(shù)組按照慣例,數(shù)組在XL中通常表示為一個(gè)父元素包含了數(shù)個(gè)一樣的子元素。一般來(lái)說(shuō),父元素的名稱是子元素名稱的復(fù)數(shù)形式。JSN對(duì)數(shù)組是原生支持的,這是由于其是Javasript的一個(gè)子集。下面分別展示了如何用
11、XL和JSN表示數(shù)組。XLJak721jakhtail.T643thtail.JSNNae:Jak,Title:develper,Phne:721,Eail:jakhtail.,Nae:T,Title:develper,Phne:643,Eail:thtail.3.3.2對(duì)象和數(shù)組一樣,對(duì)象在XL中通常會(huì)通過(guò)使用子元素與屬性來(lái)描繪。JSN是原生支持對(duì)象的。3.3.3NULLNULL在計(jì)算機(jī)中通常表示空值,無(wú)結(jié)果,或是空集合。假如需要在XL中表示一個(gè)元素為NULL值,那么需要引入xsi命名空間并且使用xsi:nil將一個(gè)元素描繪為NULL。JSN是原生支持NULL值的。下面展示如何在XL和JSN
12、中使用NULL。XLJak721JSNNae:Jak,Title:develper,Phne:721,Eail:null3.4命名空間XL支持命名空間。當(dāng)合并XL文檔時(shí),使用命名空間可以有效的防止名稱沖突。JSN那么沒(méi)有命名空間的概念,內(nèi)嵌對(duì)象是一種常用的方式來(lái)防止名稱沖突。3.5將對(duì)象格式化的策略將對(duì)象格式化為XL是相比照擬復(fù)雜的。當(dāng)對(duì)象較為復(fù)雜的時(shí)候,我們需要很長(zhǎng)時(shí)間考慮是將對(duì)象轉(zhuǎn)變?yōu)橐詫傩詾橹鲗?dǎo)的XL還是以元素為主導(dǎo)的XL。這個(gè)問(wèn)題對(duì)于JSN來(lái)說(shuō)那么相對(duì)簡(jiǎn)單,由于JSN本身基于Javasript,它可以直接使用名稱/值的方式來(lái)準(zhǔn)確描繪一個(gè)復(fù)雜的對(duì)象。3.6占用空間的大小通常來(lái)講,XL稍顯
13、臃腫,特別是以元素為主導(dǎo)的XL。這是源于XL的特性,每個(gè)元素必需要有開(kāi)場(chǎng)與完畢標(biāo)簽。相對(duì)而言,JSN那么更加簡(jiǎn)潔。有人做過(guò)一個(gè)簡(jiǎn)單的比擬,JSN相對(duì)于XL可以節(jié)省11%以上的空間使用。在互聯(lián)網(wǎng)應(yīng)用中,更小體積的數(shù)據(jù)傳輸意味著更快速的效勞單一訪問(wèn)者并且可以效勞更多的并發(fā)訪問(wèn)者。云計(jì)算是如今熱門(mén)的話題,絕大多數(shù)的云計(jì)算效勞商按流量收取費(fèi)用。那么JSN的另一個(gè)優(yōu)勢(shì)是為云計(jì)算的使用者節(jié)省本錢(qián)。3.7運(yùn)算速度使用Javasript解析XL和JSN的速度也比擬的工程之一。假定用XL和JSN分別描繪1000條eplyee記錄,使用Javasript遍歷這1000記錄并且讀取nae,title,phne和Ea
14、il4個(gè)屬性。測(cè)試結(jié)果如下:IE8JSN:77s;XL:770sFireFx3JSN:68s;XL:198sSafari4JSN:69s;XL:827shre10JSN:72s;XL:810s雖然上述測(cè)試結(jié)果與測(cè)試機(jī)的軟硬件配置有關(guān),但是解析的速度分屬于兩個(gè)數(shù)量級(jí),很明顯,Javasript解析JSN的速度遠(yuǎn)遠(yuǎn)快于解析XL。3.8平安性XL可以通過(guò)加密與簽名來(lái)實(shí)現(xiàn)對(duì)XL數(shù)據(jù)的平安保障。而JSN在平安性方面相對(duì)薄弱。一種防止不平安代碼出現(xiàn)的解決方法是通過(guò)parseJSN()讀取JSN數(shù)據(jù),parseJSN采用解析器驗(yàn)證讀入的代碼是否真的是JSN代碼,這樣就提供了較好的平安性。但是,由于這是用模擬
15、的方式讀取,速度上會(huì)比eval()慢。另外一個(gè)平安上的問(wèn)題那么是跨站懇求偽造rss-siterequestfrgery,簡(jiǎn)稱SRF或XSRF。這個(gè)問(wèn)題在Javasript中的狀況是,由于Javasript采用了稱為平安沙箱的機(jī)制,這種機(jī)制限制Javasript引擎僅能引入同一個(gè)站點(diǎn)的代碼,因此某種程度上進(jìn)步了平安性。轉(zhuǎn)貼于論文聯(lián)盟.ll.3.9應(yīng)用范圍除了用于數(shù)據(jù)交換外,XL和JSN在其他兩個(gè)方面進(jìn)展競(jìng)爭(zhēng)。3.9.1eb效勞eb效勞是最令人沖動(dòng)的革命之一,它讓使用不同系統(tǒng)和不同編程語(yǔ)言的人們可以互相交流和分享數(shù)據(jù)。其根底在于eb效勞器用XL在系統(tǒng)之間交換數(shù)據(jù)。交換數(shù)據(jù)通常用XL標(biāo)記,能使協(xié)議獲
16、得標(biāo)準(zhǔn)一致,比方在簡(jiǎn)單對(duì)象處理協(xié)議(SiplebjetAessPrtl,SAP3)平臺(tái)上。與XL相比,JSN也可以應(yīng)用于eb效勞。REST是RepresentatinalStateTransfer4的縮寫(xiě),即表象化狀態(tài)轉(zhuǎn)變?;赗EST形式的eb效勞復(fù)雜的SAP和XL-RP更加簡(jiǎn)潔。近年來(lái),我們可以看到越來(lái)越多的REST風(fēng)格的eb效勞,比方Aazn.的圖書(shū)查找效勞。3.9.2內(nèi)容管理XL只用元素和屬性來(lái)描繪數(shù)據(jù),而不提供數(shù)據(jù)的顯示方法。這樣,XL就提供了一個(gè)優(yōu)秀的方法來(lái)標(biāo)記獨(dú)立于平臺(tái)和語(yǔ)言的內(nèi)容。使用像XSLT這樣的語(yǔ)言可以輕易地將XL文件轉(zhuǎn)換成各種格式文件,比方HTL,L,PDF,flatf
17、ile,EDI,等等。XL具有的可以運(yùn)行于不同系統(tǒng)平臺(tái)之間和轉(zhuǎn)換成不同格式目的文件的才能使得它成為內(nèi)容管理應(yīng)用系統(tǒng)中的優(yōu)秀選擇。目前很多數(shù)據(jù)庫(kù)都支持XL數(shù)據(jù)庫(kù),把XL作為數(shù)據(jù)存儲(chǔ)的媒介。而隨著社交網(wǎng)站流行而興起的NSQL5數(shù)據(jù)庫(kù),為JSN作為數(shù)據(jù)存儲(chǔ)媒介帶來(lái)了時(shí)機(jī)。uhDB,Riak,Salien等NSQL數(shù)據(jù)庫(kù)的API就是JSN。4完畢語(yǔ)通過(guò)以上的比擬,JSN的標(biāo)準(zhǔn)簡(jiǎn)單,易于學(xué)習(xí)。多種語(yǔ)言開(kāi)發(fā)包使得它易于在工程中使用。無(wú)論是使用Javasript還是其他編程語(yǔ)言,操作JSN的代碼量相對(duì)較少。由于占用空間小,處理速度快,使得JSN在AJAX應(yīng)用中優(yōu)勢(shì)明顯。JSN在eb效勞與數(shù)據(jù)存儲(chǔ)方面有很大的開(kāi)展空間。XL更傾向于企業(yè)級(jí)的應(yīng)用。嚴(yán)格的標(biāo)準(zhǔn)與眾多的周邊技術(shù),使得XL應(yīng)用范圍易于擴(kuò)展。而大量的商業(yè)化的應(yīng)用程序支持XL,使得非IT人員可以較為容易的編寫(xiě)與閱讀XL。參考文獻(xiàn):1Extensiblearkuplanguage(xl)1.0(furtheditin).3,2022
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 糧油加工廠出租居間合同
- 汽車(chē)美容店裝修監(jiān)理合同
- 二零二五年度辦公室勞動(dòng)合同地址確認(rèn)及員工績(jī)效獎(jiǎng)金協(xié)議
- 裝修分期付款合同須知
- 報(bào)關(guān)合同和銷(xiāo)售合同
- 新勞動(dòng)合同法規(guī)定
- 三農(nóng)村電商行業(yè)監(jiān)管與政策支持方案
- 軟件開(kāi)發(fā)流程與項(xiàng)目管理作業(yè)指導(dǎo)書(shū)
- 居間合同物權(quán)方
- 建筑裝飾裝修工程作業(yè)指導(dǎo)書(shū)
- 家具廠各崗位責(zé)任制匯編
- 顳下頜關(guān)節(jié)盤(pán)復(fù)位固定術(shù)后護(hù)理查房
- 硝苯地平控釋片
- 四川省瀘州市2019年中考物理考試真題與答案解析
- 部編版語(yǔ)文六年級(jí)下冊(cè)全套單元基礎(chǔ)??紲y(cè)試卷含答案
- 提高檢驗(yàn)標(biāo)本合格率品管圈PDCA成果匯報(bào)
- 2023年保險(xiǎn)養(yǎng)老地產(chǎn)行業(yè)分析報(bào)告
- 世界古代史-對(duì)接選擇性必修(真題再現(xiàn)) 高考?xì)v史一輪復(fù)習(xí)
- 保險(xiǎn)公司防火應(yīng)急預(yù)案
- 動(dòng)物檢疫技術(shù)-動(dòng)物檢疫的分類(動(dòng)物防疫與檢疫技術(shù))
- 2024醫(yī)師資格考試考生誠(chéng)信考試承諾書(shū)
評(píng)論
0/150
提交評(píng)論