中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

如何在JS中實(shí)現(xiàn)相互轉(zhuǎn)換XML和JSON
來源:易賢網(wǎng) 閱讀:1312 次 日期:2016-08-01 14:20:08
溫馨提示:易賢網(wǎng)小編為您整理了“如何在JS中實(shí)現(xiàn)相互轉(zhuǎn)換XML和JSON”,方便廣大網(wǎng)友查閱!

下面先是跟大家分別介紹了JSON與XML以及它們的區(qū)別比較,后又分享關(guān)于JavaScript實(shí)現(xiàn)XML與JSON互轉(zhuǎn)例子,希望這些例子能給你帶來幫助。

開發(fā)中有時(shí)候會(huì)遇到XML和JSON相互轉(zhuǎn)換,要求在JS中使用,網(wǎng)上找了好多,竟然每一個(gè)好用的,要么缺胳膊少腿,要么詞不達(dá)意,太沒天理了,果斷自己實(shí)現(xiàn)一個(gè)。

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ù)類型,是一種允許用戶對(duì)自己的標(biāo)記語言進(jìn)行定義的源語言。 XML使用DTD(document type definition)文檔類型定義來組織數(shù)據(jù);格式統(tǒng)一,跨平臺(tái)和語言,早已成為業(yè)界公認(rèn)的標(biāo)準(zhǔn)。

XML是標(biāo)準(zhǔn)通用標(biāo)記語言 (SGML) 的子集,非常適合 Web 傳輸。XML 提供統(tǒng)一的方法來描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。

(2).JSON定義

JSON(JavaScript Object Notation)一種輕量級(jí)的數(shù)據(jù)交換格式,具有良好的可讀和便于快速編寫的特性。可在不同平臺(tái)之間進(jìn)行數(shù)據(jù)交換。JSON采用兼容性很高的、完全獨(dú)立于語言文本格式,同時(shí)也具備類似于C語言的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)體系的行為。這些特性使JSON成為理想的數(shù)據(jù)交換語言。

JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一個(gè)子集。

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文件龐大,文件格式復(fù)雜,傳輸占帶寬;

B.服務(wù)器端和客戶端都需要花費(fèi)大量代碼來解析XML,導(dǎo)致服務(wù)器端和客戶端代碼變得異常復(fù)雜且不易維護(hù);

C.客戶端不同瀏覽器之間解析XML的方式不一致,需要重復(fù)編寫很多代碼;

D.服務(wù)器端和客戶端解析XML花費(fèi)較多的資源和時(shí)間。

(2).JSON的優(yōu)缺點(diǎn)

<1>.JSON的優(yōu)點(diǎn):

A.數(shù)據(jù)格式比較簡(jiǎn)單,易于讀寫,格式都是壓縮的,占用帶寬小;

B.易于解析,客戶端JavaScript可以簡(jiǎn)單的通過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-PHP出現(xiàn)了,偏于PHP序列化后的程序直接調(diào)用,PHP服務(wù)器端的對(duì)象、數(shù)組等能直接生成JSON格式,便于客戶端的訪問提取;

E.因?yàn)镴SON格式能直接為服務(wù)器端代碼使用,大大簡(jiǎn)化了服務(wù)器端和客戶端的代碼開發(fā)量,且完成任務(wù)不變,并且易于維護(hù)。

<2>.JSON的缺點(diǎn)

A.沒有XML格式這么推廣的深入人心和喜用廣泛,沒有XML那么通用性;

B.JSON格式目前在Web Service中推廣還屬于初級(jí)階段。

在Javascript中實(shí)現(xiàn)XML和JSON相互轉(zhuǎn)換

先看調(diào)用例子:

代碼如下:

<viewport id="menuPane" layout="border">

    <panel region="center" border="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();

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() {

}

XmlToJson.prototype.setXml = function(xml) {

    if(xml && typeof xml == "string") {

        this.xml = document.createElement("div");

        this.xml.innerHTML = xml;

        this.xml = this.xml.getElementsByTagName("*")[0];

    }

    else if(typeof xml == "object"){

        this.xml = xml;

    }

};

XmlToJson.prototype.getXml = function() {

    return this.xml;

};

XmlToJson.prototype.parse = function(xml) {

    this.setXml(xml);

    return this.convert(this.xml);

};

XmlToJson.prototype.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; j < xml.attributes.length; j++) {

            var attribute = xml.attributes.item(j);

            obj[attribute.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(items.length > 0) {

            obj.items = items;

        }

    }

    return obj;

};

JSON轉(zhuǎn)換為XML:

代碼如下:

function JsonToXml() {

 this.result = [];

}

JsonToXml.prototype.spacialChars = ["&","<",">","\"","'"];

JsonToXml.prototype.validChars = ["&","<",">",""","'"];

JsonToXml.prototype.toString = function(){

 return this.result.join("");

};

JsonToXml.prototype.replaceSpecialChar = function(s){

    for(var i=0;i<this.spacialChars.length;i++){

        s=s.replace(new RegExp(this.spacialChars[i],"g"),this.validChars[i]);

    }

    return s;

};

JsonToXml.prototype.appendText = function(s){

    s = this.replaceSpecialChar(s);

    this.result.push(s);

};

JsonToXml.prototype.appendAttr = function(key, value){

    this.result.push(" "+ key +"=\""+ value +"\"");

};

JsonToXml.prototype.appendFlagBeginS = function(s){

 this.result.push("<"+s);

};

JsonToXml.prototype.appendFlagBeginE = function(){

 this.result.push(">");

};

JsonToXml.prototype.appendFlagEnd = function(s){

 this.result.push("</"+s+">");

};

JsonToXml.prototype.parse = function(json){

 this.convert(json);

 return this.toString();

};

JsonToXml.prototype.convert = function(obj) {

 var nodeName = obj.xtype || "item";

 this.appendFlagBeginS(nodeName);

 var arrayMap = {};

 for(var key in obj) {

  var item = obj[key];

  if(key == "xtype") {

   continue;

  }

  if(item.constructor == String) {

   this.appendAttr(key, item);

  }

  if(item.constructor == Array) {

   arrayMap[key] = item;

  }

 }

 this.appendFlagBeginE();

 for(var key in arrayMap) {

  var items = arrayMap[key];

  for(var i=0;i<items.length;i++) {

   this.convert(items[i]);

  }

 }

 this.appendFlagEnd(nodeName);

};

以上就是為大家整理的在Javascript中實(shí)現(xiàn)XML和JSON相互轉(zhuǎn)換,希望本文所述對(duì)大家學(xué)習(xí)javascript有所幫助。

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:如何在JS中實(shí)現(xiàn)相互轉(zhuǎn)換XML和JSON
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn)

版權(quán)所有:易賢網(wǎng)

中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
成人福利视频网站| 丁香桃色午夜亚洲一区二区三区| 欧美激情综合五月色丁香| 91精品国产色综合久久久蜜香臀| 91国偷自产一区二区三区观看| 色94色欧美sute亚洲线路二| 欧美综合天天夜夜久久| 91免费国产在线观看| 色伊人久久综合中文字幕| 在线看不卡av| 日韩欧美黄色影院| 久久久久99精品一区| 国产精品欧美一级免费| 亚洲一区二区在线视频| 性久久久久久久| 久久精品国产精品亚洲精品| 国产真实精品久久二三区| 成人精品国产一区二区4080| 色综合天天综合网天天看片| 在线成人av网站| 欧美va亚洲va| 成人欧美一区二区三区在线播放| 亚洲区小说区图片区qvod| 亚洲成人激情av| 国产精品综合在线视频| 91丨九色porny丨蝌蚪| 欧美精品久久99| 国产精品少妇自拍| 首页国产丝袜综合| 成人性色生活片| 欧美一级专区免费大片| 国产精品妹子av| 日产国产欧美视频一区精品| 国产剧情一区二区| 欧美剧情片在线观看| 国产日韩高清在线| 无吗不卡中文字幕| 国产成人综合亚洲91猫咪| 欧美日韩在线播放| 亚洲国产精品高清| 蜜桃视频免费观看一区| 色综合久久综合中文综合网| 欧美α欧美αv大片| 亚洲卡通欧美制服中文| 麻豆成人91精品二区三区| 97久久超碰国产精品| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲精品自拍动漫在线| 国产成人aaaa| 欧美精品一区二区三区一线天视频| 18欧美亚洲精品| 国产91在线观看丝袜| 欧美成人一级视频| 日韩—二三区免费观看av| 色天使色偷偷av一区二区| 国产午夜精品久久久久久免费视 | 日韩免费性生活视频播放| 亚洲精品国产精品乱码不99| 岛国精品一区二区| 国产亚洲欧美日韩俺去了| 蜜桃一区二区三区在线| 欧美日韩高清影院| 亚洲图片欧美综合| 在线欧美小视频| 一区二区成人在线| 91国偷自产一区二区三区成为亚洲经典 | 精品国产乱码久久久久久久| 日韩av一区二区三区| 欧美精品vⅰdeose4hd| 一区二区在线看| 色老汉av一区二区三区| 国产精品福利一区二区三区| 成人h动漫精品| 亚洲视频一二区| 色香蕉成人二区免费| 综合亚洲深深色噜噜狠狠网站| 北条麻妃一区二区三区| 中文字幕一区二区三中文字幕| 国产成人自拍在线| **欧美大码日韩| 91婷婷韩国欧美一区二区| 一区二区视频免费在线观看| 欧美影院一区二区| 亚洲一区二区视频在线| 制服丝袜中文字幕一区| 男人的天堂久久精品| 久久丝袜美腿综合| av一本久道久久综合久久鬼色| 亚洲女女做受ⅹxx高潮| 欧美高清激情brazzers| 美洲天堂一区二卡三卡四卡视频 | 91在线无精精品入口| 亚洲男人都懂的| 制服丝袜在线91| 国产成人亚洲综合a∨婷婷| 国产精品久久看| 91成人看片片| 国内外成人在线| 国产精品福利av| 欧美一区二区三区在线看| 国产乱码字幕精品高清av| 国产精品黄色在线观看| 欧美久久久久久久久| 国产超碰在线一区| 天堂一区二区在线免费观看| 久久久久久99精品| 91成人看片片| 国产精品自在在线| 亚洲成人免费在线| 亚洲国产精品高清| 91精品国产欧美日韩| 成人av影院在线| 日韩va亚洲va欧美va久久| 国产精品国产精品国产专区不蜜| 欧美日韩三级在线| 国产高清精品网站| 免费高清成人在线| 亚洲老妇xxxxxx| 国产欧美日韩在线观看| 9191精品国产综合久久久久久| 成人午夜视频免费看| 免费在线观看日韩欧美| 亚洲精品一卡二卡| 欧美激情一区在线观看| 欧美成人a∨高清免费观看| 欧美午夜寂寞影院| 不卡av在线免费观看| 精品一区二区在线视频| 午夜精品久久久久久久| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩一区二区免费在线观看| 欧美色精品天天在线观看视频| 成人免费毛片app| 精品一区二区三区免费视频| 日韩av中文在线观看| 午夜久久久影院| 亚洲大片一区二区三区| 亚洲精选在线视频| 亚洲天堂a在线| 国产精品九色蝌蚪自拍| 国产精品女上位| 欧美激情一区二区三区不卡 | 777奇米四色成人影色区| 在线观看欧美精品| 欧美影视一区二区三区| 91九色最新地址| 色综合久久天天综合网| 色综合网色综合| 色8久久人人97超碰香蕉987| 99在线热播精品免费| 91在线视频播放地址| 97精品视频在线观看自产线路二| 99久久99精品久久久久久| 99精品欧美一区| 91福利视频网站| 欧美福利视频导航| 欧美一级欧美三级在线观看| 日韩欧美国产成人一区二区| 日韩免费看的电影| 国产日韩精品一区二区浪潮av | 亚洲国产日韩av| 日韩av在线发布| 国产在线一区二区| 国产精品一区二区三区四区| 不卡视频在线看| 欧美区一区二区三区| 日韩午夜av电影| 国产清纯美女被跳蛋高潮一区二区久久w | 色av综合在线| 欧美一级二级在线观看| 久久综合资源网| 国产精品麻豆久久久| 午夜精品久久一牛影视| 久久成人免费网站| www.激情成人| 欧美日韩国产综合一区二区| 亚洲精品一区在线观看| 亚洲欧美一区二区在线观看| 日韩精品久久理论片| 成人综合激情网| 欧美精品一级二级| 国产欧美精品一区二区色综合| 一区二区三区在线视频观看58| 日本欧美肥老太交大片| youjizz久久| 欧美一卡二卡在线| 亚洲日本青草视频在线怡红院 | 亚洲制服欧美中文字幕中文字幕| 蜜桃久久精品一区二区| 99精品黄色片免费大全| 91精品国产综合久久婷婷香蕉 | 91蝌蚪国产九色| 日韩亚洲欧美一区| 亚洲人成亚洲人成在线观看图片| 免费看精品久久片| 色先锋久久av资源部| 中文字幕va一区二区三区| 奇米777欧美一区二区| 在线看一区二区| 中文字幕一区二区不卡|