<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JS相互轉(zhuǎn)換XML和JSON的方法

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 19:52:10
        文檔

        JS相互轉(zhuǎn)換XML和JSON的方法

        JS相互轉(zhuǎn)換XML和JSON的方法:這次給大家?guī)鞪S相互轉(zhuǎn)換XML和JSON的方法,JS相互轉(zhuǎn)換XML和JSON的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。開發(fā)中有時候會遇到XML和JSON相互轉(zhuǎn)換,要求在JS中使用,網(wǎng)上找了好多,竟然每一個好用的,要么缺胳膊少腿,要么詞不達意,太沒天理了,果
        推薦度:
        導(dǎo)讀JS相互轉(zhuǎn)換XML和JSON的方法:這次給大家?guī)鞪S相互轉(zhuǎn)換XML和JSON的方法,JS相互轉(zhuǎn)換XML和JSON的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。開發(fā)中有時候會遇到XML和JSON相互轉(zhuǎn)換,要求在JS中使用,網(wǎng)上找了好多,竟然每一個好用的,要么缺胳膊少腿,要么詞不達意,太沒天理了,果

        這次給大家?guī)鞪S相互轉(zhuǎn)換XML和JSON的方法,JS相互轉(zhuǎn)換XML和JSON的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。

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

        JSON與XML的區(qū)別比較

        1.定義介紹

        (1).XML定義

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

        (2).JSON定義

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

        2.XML和JSON優(yōu)缺點

        (1).XML的優(yōu)缺點

        <1>.XML的優(yōu)點
          A.格式統(tǒng)一,符合標準;
          B.容易與其他系統(tǒng)進行遠程交互,數(shù)據(jù)共享比較方便。

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

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

        <1>.JSON的優(yōu)點:
          A.數(shù)據(jù)格式比較簡單,易于讀寫,格式都是壓縮的,占用帶寬小;

          B.易于解析,客戶端JavaScript可以簡單的通過eval()進行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ù)器端的對象、數(shù)組等能直接生成JSON格式,便于客戶端的訪問提取;

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

        <2>.JSON的缺點

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

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

        在Javascript中實現(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("p");
         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);
        };

        相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關(guān)注Gxl網(wǎng)其它相關(guān)文章!

        推薦閱讀:

        解析Json有哪些方法

        JS判斷json有哪些方法

        JSONP原理詳解以及案例分析

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JS相互轉(zhuǎn)換XML和JSON的方法

        JS相互轉(zhuǎn)換XML和JSON的方法:這次給大家?guī)鞪S相互轉(zhuǎn)換XML和JSON的方法,JS相互轉(zhuǎn)換XML和JSON的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。開發(fā)中有時候會遇到XML和JSON相互轉(zhuǎn)換,要求在JS中使用,網(wǎng)上找了好多,竟然每一個好用的,要么缺胳膊少腿,要么詞不達意,太沒天理了,果
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 黄色网页在线免费观看| 精品国产日韩亚洲一区91| 日本免费一区尤物| 亚洲欧洲精品国产区| 日韩免费无码视频一区二区三区| 国产亚洲日韩在线三区| 抽搐一进一出gif免费视频| 亚洲狠狠婷婷综合久久久久| 亚洲男人天堂2022| 麻豆精品不卡国产免费看| 亚洲高清专区日韩精品| 日本不卡免费新一区二区三区| 巨胸喷奶水视频www网免费| 中文字幕乱码亚洲无线三区| 在线精品免费视频| 四虎一区二区成人免费影院网址 | 亚洲国产精品精华液| 日韩电影免费在线| 一级成人a做片免费| 日韩电影免费在线观看视频| 免费人成网站永久| 好看的亚洲黄色经典| 免费福利视频导航| 亚洲av乱码一区二区三区按摩| 又粗又大又猛又爽免费视频| 中出五十路免费视频| 亚洲第一成年网站大全亚洲| 国产美女无遮挡免费视频网站| 99亚偷拍自图区亚洲| 国产亚洲成归v人片在线观看| 无码国产精品一区二区免费3p | 麻豆一区二区免费播放网站| 亚洲精华液一二三产区| 亚洲女久久久噜噜噜熟女| 免费人妻无码不卡中文字幕系| 亚洲成AV人影片在线观看| 亚洲国产成人一区二区三区| 毛片免费观看的视频在线| 两性色午夜免费视频| 欧洲亚洲国产精华液| 亚洲va在线va天堂va888www|