資源描述:
《比較xml與json在web中的應(yīng)用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、比較XML與JSON在Web中的應(yīng)用摘要:隨著越來越多的AJAX應(yīng)用的出現(xiàn),XML和JSON成為主要的數(shù)據(jù)交換格式。選擇適合的數(shù)據(jù)交換格式對(duì)今后的數(shù)據(jù)轉(zhuǎn)換和應(yīng)用程序性能至關(guān)重要。通過對(duì)比兩種格式的語(yǔ)言特性、編程語(yǔ)言支持、運(yùn)行效率、安全性以及應(yīng)用范圍和學(xué)習(xí)難易程度,并輔以事例及代碼片段,說明JSON比XML更加適合在LJSONAJAX 1概述 1.1XML與JSON簡(jiǎn)介 XML[1]是ExtensibleMarkupLanguage的縮寫,中文名稱是可擴(kuò)展標(biāo)記語(yǔ)言,它源自標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言SGML,XML是從1995年開始有其雛形,并向
2、L1.0)。XML是一種格式統(tǒng)一,跨平臺(tái)的語(yǔ)言,早已成為業(yè)界公認(rèn)的標(biāo)準(zhǔn)。XML使用元素和屬性來描述數(shù)據(jù)。在數(shù)據(jù)傳送過程中,XML始終保留了諸如父/子關(guān)系這樣的數(shù)據(jù)結(jié)構(gòu)。幾個(gè)應(yīng)用程序可以共享和解析同一個(gè)XML文件,不必使用傳統(tǒng)的字符串解析或拆解過程。相反,普通文件不對(duì)每個(gè)數(shù)據(jù)段做描述(除了在頭文件中),也不保留數(shù)據(jù)關(guān)系結(jié)構(gòu)。使用XML做數(shù)據(jù)交換可以使應(yīng)用程序更具有彈性,因?yàn)榭梢杂梦恢?與普通文件一樣)或用元素名(從數(shù)據(jù)庫(kù))來存取XML數(shù)據(jù)?! SON[2](JavaScriptObjectNotation)是一種輕量級(jí)的數(shù)據(jù)交換格式,易于閱讀
3、和編寫,同時(shí)也易于機(jī)器解析和生成。它基于JavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-December1999的一個(gè)子集。JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C,C++,C#,Java,JavaScript,Perl,Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。JSON建構(gòu)于兩種結(jié)構(gòu):名稱/值對(duì)的集合和值的有序列表??梢杂肑SON傳輸一個(gè)簡(jiǎn)單的String,Number,Boolean,也可以傳輸一個(gè)數(shù)組,或者一個(gè)復(fù)雜
4、的Object對(duì)象。 1.2XML和JSON范例 假定已經(jīng)存在一個(gè)Employee類,其有4個(gè)屬性:Name,Title,Phone和Email。下面分別用XML和JSON表示這個(gè)類的一個(gè)實(shí)例?! ?.2.1XML Jack 721 jackhotmail. 1.2.2JSON { Name:Jack, Title:developer, Phone:721, Email:jackhotmail. } 2使用編程語(yǔ)言操作XML和JSON 2.1XML與JSON在項(xiàng)目中的使用方法 作為數(shù)據(jù)交換格式,X
5、ML和JSON具有語(yǔ)言無關(guān)性的特點(diǎn),可以在異構(gòu)的應(yīng)用程序之間傳遞數(shù)據(jù)。在L和JSON傳輸數(shù)據(jù)的過程基本如下所述?! ?.1.1瀏覽器 ?、偈褂脴?biāo)準(zhǔn)JavaScript語(yǔ)法創(chuàng)建對(duì)象。②把對(duì)象轉(zhuǎn)換成JSON或者XML字符串。③通常以Ajax請(qǐng)求方式發(fā)送字符串到服務(wù)器?! ?.1.2服務(wù)器 ?、俳馕鍪盏降腏SON或XML字符串,并創(chuàng)建和裝配一個(gè)類實(shí)例。②執(zhí)行相關(guān)業(yè)務(wù)邏輯。③創(chuàng)建新的對(duì)象來存儲(chǔ)要返回客戶端的數(shù)據(jù),把這個(gè)對(duì)象轉(zhuǎn)換成JSON或XML字符串并返回到瀏覽器?! ?.1.3瀏覽器 ?、偈褂肑avaScript解析收到的JSON或XML字符串,并
6、將其轉(zhuǎn)換為預(yù)定義的對(duì)象。②最后使用該對(duì)象完成對(duì)頁(yè)面元素的更新。 由于Javascript在L和JSON進(jìn)行操作。 2.2使用Javascript解析XML和JSON 如果要使用Javascript解析XML需要使用XMLDOM和編寫一定量的代碼實(shí)現(xiàn)將文本轉(zhuǎn)變?yōu)橐粋€(gè)Javascript對(duì)象。而JSON則可以通過簡(jiǎn)單的eval()函數(shù)將JSON輕松轉(zhuǎn)變?yōu)橐粋€(gè)Javascript對(duì)象。當(dāng)然,也可以使用json.js實(shí)現(xiàn)這種轉(zhuǎn)變。通過下表中列出的實(shí)例代碼,很明顯,無論是使用eval函數(shù)還是使用json.js,使用Javascript解析JSON
7、是非常簡(jiǎn)單的?! ?.2.1Javascript解析XML varxmlDoc; //codeforIE if(lDoc=nelDoc.async=false; xmlDoc.loadXML(xmlString); } //codeforMozilla,etc. elseif(document.implementation document.implementation.createDocument){ varobjDOMParser=nelDoc=objDOMParser.parseFromString(xmlString
8、,'text/xml'); } 2.2.2使用eval函數(shù)解析JSON varstr={name:Jack, title:developer, phone