亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

如何在JS中實現相互轉換XML和JSON

2019-11-20 09:26:57
字體:
來源:轉載
供稿:網友

開發中有時候會遇到XML和JSON相互轉換,要求在JS中使用,網上找了好多,竟然每一個好用的,要么缺胳膊少腿,要么詞不達意,太沒天理了,果斷自己實現一個。

JSON與XML的區別比較

1.定義介紹

(1).XML定義

擴展標記語言 (Extensible Markup Language, XML) ,用于標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 XML使用DTD(document type definition)文檔類型定義來組織數據;格式統一,跨平臺和語言,早已成為業界公認的標準。
XML是標準通用標記語言 (SGML) 的子集,非常適合 Web 傳輸。XML 提供統一的方法來描述和交換獨立于應用程序或供應商的結構化數據。

(2).JSON定義

JSON(JavaScript Object Notation)一種輕量級的數據交換格式,具有良好的可讀和便于快速編寫的特性??稍诓煌脚_之間進行數據交換。JSON采用兼容性很高的、完全獨立于語言文本格式,同時也具備類似于C語言的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)體系的行為。這些特性使JSON成為理想的數據交換語言。
JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一個子集。

2.XML和JSON優缺點

(1).XML的優缺點

<1>.XML的優點
  A.格式統一,符合標準;
  B.容易與其他系統進行遠程交互,數據共享比較方便。

<2>.XML的缺點
  A.XML文件龐大,文件格式復雜,傳輸占帶寬;
  B.服務器端和客戶端都需要花費大量代碼來解析XML,導致服務器端和客戶端代碼變得異常復雜且不易維護;
  C.客戶端不同瀏覽器之間解析XML的方式不一致,需要重復編寫很多代碼;
  D.服務器端和客戶端解析XML花費較多的資源和時間。

(2).JSON的優缺點

<1>.JSON的優點:
  A.數據格式比較簡單,易于讀寫,格式都是壓縮的,占用帶寬??;

  B.易于解析,客戶端JavaScript可以簡單的通過eval()進行JSON數據的讀??;

  C.支持多種語言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服務器端語言,便于服務器端的解析;

  D.在PHP世界,已經有PHP-JSON和JSON-PHP出現了,偏于PHP序列化后的程序直接調用,PHP服務器端的對象、數組等能直接生成JSON格式,便于客戶端的訪問提??;

  E.因為JSON格式能直接為服務器端代碼使用,大大簡化了服務器端和客戶端的代碼開發量,且完成任務不變,并且易于維護。

<2>.JSON的缺點

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

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

在Javascript中實現XML和JSON相互轉換

先看調用例子:

復制代碼 代碼如下:

<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轉換為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轉換為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中實現XML和JSON相互轉換,希望本文所述對大家學習javascript有所幫助。

關于XML和JSON互相轉換感興趣的朋友還可參考在線工具:

在線XML/JSON互相轉換工具

在線XML格式化/壓縮工具

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大片大片在线播放| 久久久久北条麻妃免费看| 韩国v欧美v日本v亚洲| 国内精品400部情侣激情| 欧美黑人性猛交| 亚洲欧美日韩久久久久久| 精品欧美激情精品一区| 亚洲人在线视频| 国产精品美乳一区二区免费| 美女精品视频一区| 亚洲欧美日韩成人| 亚洲国产精品国自产拍av秋霞| 国产精品久久久久久久久久久新郎| 疯狂做受xxxx高潮欧美日本| 日韩在线免费视频| 久久香蕉国产线看观看网| 91在线免费看网站| 亚洲精品成人免费| 亚洲片国产一区一级在线观看| 欧美成人午夜激情| 国产999在线| 亚洲人成伊人成综合网久久久| 欧美影院在线播放| 91精品久久久久久久久青青| 中日韩美女免费视频网址在线观看| 精品亚洲一区二区三区在线播放| 在线观看免费高清视频97| 亚洲影院色无极综合| 正在播放欧美一区| 日韩电影中文 亚洲精品乱码| 68精品国产免费久久久久久婷婷| 欧美激情免费看| 色综合天天综合网国产成人网| 久久久亚洲天堂| 久久久国产精品x99av| 国产精品久久久久999| 久久香蕉频线观| 久久精品99国产精品酒店日本| 亚洲最大福利网| 欧美国产日韩中文字幕在线| 久久艹在线视频| 这里只有视频精品| 亚洲精品视频免费| www.午夜精品| 日韩电视剧免费观看网站| 中文字幕国产精品| 亚洲欧洲在线播放| 性欧美亚洲xxxx乳在线观看| 欧美另类在线播放| 日韩中文字幕在线视频| 亚洲人成电影在线观看天堂色| 亚洲精品欧美一区二区三区| 欧美大全免费观看电视剧大泉洋| 国产精品稀缺呦系列在线| 亚洲精品乱码久久久久久按摩观| 亚洲男人的天堂网站| 精品国产乱码久久久久久天美| 国产欧美日韩专区发布| 国产成人+综合亚洲+天堂| 日韩在线视频免费观看高清中文| 在线视频日本亚洲性| 国产日韩在线一区| 超碰97人人做人人爱少妇| 国产精品久久久久7777婷婷| 国产精品h在线观看| 亚洲国产成人91精品| 欧美三级免费观看| 日本中文字幕成人| 国产精品尤物福利片在线观看| 欧美性20hd另类| 成人免费网站在线看| 狠狠躁夜夜躁久久躁别揉| 中文字幕精品网| 精品美女永久免费视频| 992tv在线成人免费观看| 日韩精品小视频| 欧美成人亚洲成人| 国产精品久久久av久久久| 最近2019年中文视频免费在线观看| 国产精品自在线| 川上优av一区二区线观看| 亚洲欧洲国产伦综合| 久久久天堂国产精品女人| 日韩www在线| 亚洲精品女av网站| 久久免费视频网| 国产九九精品视频| 国产精品第10页| 久久夜精品va视频免费观看| 色综合91久久精品中文字幕| 日韩精品中文字幕在线播放| 黑人巨大精品欧美一区免费视频| 97在线视频免费观看| 日韩美女在线观看一区| 日韩高清欧美高清| 国产精品久久久999| 亚洲国产精久久久久久| 欧美综合第一页| 亚洲福利视频专区| 欧美日韩久久久久| 国产精品av免费在线观看| 国产在线日韩在线| 午夜免费久久久久| 成人有码视频在线播放| 日韩电视剧免费观看网站| 91中文字幕在线| 久久久亚洲国产天美传媒修理工| 5278欧美一区二区三区| 亚洲肉体裸体xxxx137| 97视频在线看| 亚洲天堂男人天堂女人天堂| 成人免费视频网址| 日韩av在线网| 欧美成人国产va精品日本一级| 亚洲亚裔videos黑人hd| 中文字幕免费精品一区| 国产69精品久久久| 日韩精品极品在线观看| 97国产精品久久| 最新国产成人av网站网址麻豆| 欧美黄色小视频| 一本一道久久a久久精品逆3p| 夜夜躁日日躁狠狠久久88av| 在线一区二区日韩| 日韩电视剧免费观看网站| 国产成人一区三区| 97av在线视频免费播放| 超碰97人人做人人爱少妇| 日韩综合视频在线观看| 欧美极品欧美精品欧美视频| 亚洲aaa激情| 午夜精品美女自拍福到在线| 日韩精品视频免费在线观看| 久久免费观看视频| 91视频国产高清| 精品国产一区二区三区在线观看| 国产经典一区二区| 尤物九九久久国产精品的特点| 亚洲成人黄色在线| 欧美高清视频一区二区| 亚洲美女www午夜| 国产极品jizzhd欧美| 91免费观看网站| 欧美床上激情在线观看| 久久av红桃一区二区小说| 91av国产在线| 91在线高清视频| xxxx欧美18另类的高清| 久久精品色欧美aⅴ一区二区| 精品亚洲va在线va天堂资源站| 国产视频一区在线| 久久99热精品| 日韩va亚洲va欧洲va国产| 日韩欧美国产免费播放| 精品国偷自产在线| 欧美性受xxxx白人性爽| 欧美激情欧美狂野欧美精品| 精品视频—区二区三区免费| 亚洲国产精品大全| 欧美裸体xxxx极品少妇软件| 精品欧美aⅴ在线网站| 国产日韩欧美电影在线观看| 欧美大肥婆大肥bbbbb| 久久精品国产清自在天天线|