版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、如何在JS中實(shí)現(xiàn)相互轉(zhuǎn)換XML和JSON_ 下面先是跟大家分別介紹了JSON與XML以及它們的區(qū)分比較,后又分享關(guān)于JavaScript實(shí)現(xiàn)XML與JSON互轉(zhuǎn)例子,盼望這些例子能給你帶來關(guān)心。 開發(fā)中有時候會遇到XML和JSON相互轉(zhuǎn)換,要求在JS中用法,網(wǎng)上找了好多,竟然每一個好用的,要么缺胳膊少腿,要么詞不達(dá)意,太沒天理了,果斷自己實(shí)現(xiàn)一個。 JSON與XML的區(qū)分比較 1.定義介紹 (1).XML定義 擴(kuò)展標(biāo)記語言 (Extensible Markup Language, XML) ,用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語
2、言進(jìn)行定義的源語言。 XML用法DTD(document type definition)文檔類型定義來組織數(shù)據(jù);格式統(tǒng)一,跨平臺和語言,早已成為業(yè)界公認(rèn)的標(biāo)準(zhǔn)。 XML是標(biāo)準(zhǔn)通用標(biāo)記語言 (SGML) 的子集,特別適合 Web 傳輸。XML 供應(yīng)統(tǒng)一的方法來描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。 (2).JSON定義 JSON(JavaScript Object Notation)一種輕量級的數(shù)據(jù)交換格式,具有良好的可讀和便于快速編寫的特性??稍诓煌脚_之間進(jìn)行數(shù)據(jù)交換。JSON采納兼容性很高的、完全獨(dú)立于語言文本格式,同時也具備類似于C語言的習(xí)慣(包括C, C+, C#, Java
3、, JavaScript, Perl, Python等)體系的行為。這些特性使JSON成為抱負(fù)的數(shù)據(jù)交換語言。 JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一個子集。 2.XML和JSON優(yōu)缺點(diǎn) (1).XML的優(yōu)缺點(diǎn) 1.XML的優(yōu)點(diǎn) A.格式統(tǒng)一,符合標(biāo)準(zhǔn); B.簡單與其他系統(tǒng)進(jìn)行遠(yuǎn)程交互,數(shù)據(jù)共享比較便利。 2.XML的缺點(diǎn) A.XML文件浩大,文件格式簡單,傳輸占帶寬; B.服務(wù)器端和客戶端都需要花費(fèi)大量代碼來解析XML,導(dǎo)致服務(wù)器端和客戶端代碼變得特別簡單
4、且不易維護(hù); C.客戶端不同掃瞄器之間解析XML的方式不全都,需要重復(fù)編寫許多代碼; D.服務(wù)器端和客戶端解析XML花費(fèi)較多的資源和時間。 (2).JSON的優(yōu)缺點(diǎn) 1.JSON的優(yōu)點(diǎn): A.數(shù)據(jù)格式比較簡潔,易于讀寫,格式都是壓縮的,占用帶寬?。?B.易于解析,客戶端JavaScript可以簡潔的通過eval()進(jìn)行JSON數(shù)據(jù)的讀?。?C.支持多種語言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服務(wù)器端語言,便于服務(wù)器端的解析; D.在PHP世界,已經(jīng)有PHP-JSON和JSON
5、-PHP消失了,偏于PHP序列化后的程序挺直調(diào)用,PHP服務(wù)器端的對象、數(shù)組等能挺直生成JSON格式,便于客戶端的訪問提取; E.由于JSON格式能挺直為服務(wù)器端代碼用法,大大簡化了服務(wù)器端和客戶端的代碼開發(fā)量,且完成任務(wù)不變,并且易于維護(hù)。 2.JSON的缺點(diǎn) A.沒有XML格式這么推廣的深化人心和喜用廣泛,沒有XML那么通用性; B.JSON格式目前在Web Service中推廣還屬于初級階段。 在Javascript中實(shí)現(xiàn)XML和JSON相互轉(zhuǎn)換 先看調(diào)用例子: 代碼如下: viewport id=menuPane layout=border panel region=center bo
6、rder=0 layout=border tbar toolbar text=XXXX menu text text=11 /text text text=22 /text text text=33 /text /menu /toolbar toolbar text=XXXX menu text text=44 /text text text=55 /text menu text text=6 6 /text /menu text text=77 /text /menu /toolbar /tbar /panel /viewport var xmlParser = new XmlToJson(
7、); var json = xmlParser.parse(xml); console.log( JSON.stringify(json) ); var jsonParser = new JsonToXml(); var xml = jsonParser.parse(json); console.log( xml ); XML轉(zhuǎn)換為JSON: 代碼如下: function XmlToJson() XmlToJtotype.setXml = function(xml) if(xml typeof xml = string) this.xml = document.createEle
8、ment(div); this.xml.innerHTML = xml; this.xml = this.xml.getElementsByTagName(*)0; else if(typeof xml = object) this.xml = xml; ; XmlToJtotype.getXml = function() return this.xml; ; XmlToJtotype.parse = function(xml) this.setXml(xml); return this.convert(this.xml); ; XmlToJtotyp
9、e.convert = function(xml) if (xml.nodeType != 1) return null; var obj = ; obj.xtype = xml.nodeName.toLowerCase(); var nodeValue = (xml.textContent | ).replace(/(r|n)/g, ).replace(/s+|s+$/g, ); if(nodeValue xml.childNodes.length = 1) obj.text = nodeValue; if (xml.attributes.length 0) for (var j = 0;
10、j xml.attributes.length; j+) var attribute = xml.attributes.item(j); objattribute.nodeName = attribute.nodeValue; if (xml.childNodes.length 0) var items = ; for(var i = 0; i xml.childNodes.length; i+) var node = xml.childNodes.item(i); var item = this.convert(node); if(item) items.push(item); if(ite
11、ms.length 0) obj.items = items; return obj; ; JSON轉(zhuǎn)換為XML: 代碼如下: function JsonToXml() this.result = ; JsonToXtotype.spacialChars = ,; JsonToXtotype.validChars = ,; JsonToXtotype.toString = function() return this.result.join(); ; JsonToXtotype.replaceSpecialChar = function(s) f
12、or(var i=0;ithis.spacialChars.length;i+) s=s.replace(new RegExp(this.spacialCharsi,g),this.validCharsi); return s; ; JsonToXtotype.appendText = function(s) s = this.replaceSpecialChar(s); this.result.push(s); ; JsonToXtotype.appendAttr = function(key, value) this.result.push( + key +=+ v
13、alue +); ; JsonToXtotype.appendFlagBeginS = function(s) this.result.push(+s); ; JsonToXtotype.appendFlagBeginE = function() this.result.push(); ; JsonToXtotype.appendFlagEnd = function(s) this.result.push(/+s+); ; JsonToXtotype.parse = function(json) this.convert(json); retur
14、n this.toString(); ; JsonToXtotype.convert = function(obj) var nodeName = obj.xtype | item; this.appendFlagBeginS(nodeName); var arrayMap = ; for(var key in obj) var item = objkey; if(key = xtype) continue; if(item.constructor = String) this.appendAttr(key, item); if(item.constructor = Array) arrayMapkey = item; thi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國停車場橡膠擋車墩市場調(diào)查研究報告
- 2025至2030年中國車用音頻轉(zhuǎn)換器數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國熱合包裝機(jī)數(shù)據(jù)監(jiān)測研究報告
- 2025版珠寶首飾定制銷售合同模板
- 2025版科技創(chuàng)新成果轉(zhuǎn)化授權(quán)委托書范本3篇
- 二零二五版消防員勞動合同范本:公共安全消防員勞動服務(wù)協(xié)議
- 2019-2020學(xué)年滬科版九年級物理第一學(xué)期期中測試題(含答案)
- 夫妻家庭財產(chǎn)約定協(xié)議范本
- 植入廣告贊助合同書
- 防火門購銷合同
- 泵車述職報告
- 2024年山西文旅集團(tuán)招聘筆試參考題庫含答案解析
- 恢復(fù)中華人民共和國國籍申請表
- 管理期貨的趨勢跟蹤策略 尋找危機(jī)阿爾法
- 瀝青化學(xué)分析試驗(yàn)作業(yè)指導(dǎo)書
- 2023年大學(xué)物理化學(xué)實(shí)驗(yàn)報告化學(xué)電池溫度系數(shù)的測定
- 腦出血的護(hù)理課件腦出血護(hù)理查房PPT
- 南京大學(xué)-大學(xué)計算機(jī)信息技術(shù)教程-指導(dǎo)書
- 扣繳個人所得稅報告表-(Excel版)
- 02R112 拱頂油罐圖集
- Unit+4+History+and+Traditions單元整體教學(xué)設(shè)計課件 高中英語人教版(2019)必修第二冊單元整體教學(xué)設(shè)計
評論
0/150
提交評論