zoukankan      html  css  js  c++  java
  • js实现xml转json

    <!DOCTYPE html>          
    <html lang="en">          
    <head>          
        <meta charset="UTF-8">          
        <title>js实现xml转json</title>        
        <style type="text/css">        
            html,body{100%;height:100%;margin:0;}         
        </style>        
    </head>          
    <body>         
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>        
    <script type="text/javascript">    
    // Converts XML to JSON    
    // from: http://coursesweb.net/javascript/convert-xml-json-javascript_s2    
    function XMLtoJSON() {    
      var me = this;      // stores the object instantce    
        
      // gets the content of an xml file and returns it in     
      me.fromFile = function(xml, rstr) {    
        // Cretes a instantce of XMLHttpRequest object    
        var xhttp = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");    
        // sets and sends the request for calling "xml"    
        xhttp.open("GET", xml ,false);    
        xhttp.send(null);    
        
        // gets the JSON string    
        var json_str = jsontoStr(setJsonObj(xhttp.responseXML));    
        
        // sets and returns the JSON object, if "rstr" undefined (not passed), else, returns JSON string    
        return (typeof(rstr) == 'undefined') ? JSON.parse(json_str) : json_str;    
      }    
        
      // returns XML DOM from string with xml content    
      me.fromStr = function(xml, rstr) {    
        // for non IE browsers    
        if(window.DOMParser) {    
          var getxml = new DOMParser();    
          var xmlDoc = getxml.parseFromString(xml,"text/xml");    
        }    
        else {    
          // for Internet Explorer    
          var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");    
          xmlDoc.async = "false";    
        }    
        
        // gets the JSON string    
        var json_str = jsontoStr(setJsonObj(xmlDoc));    
        
        // sets and returns the JSON object, if "rstr" undefined (not passed), else, returns JSON string    
        return (typeof(rstr) == 'undefined') ? JSON.parse(json_str) : json_str;    
      }    
        
      // receives XML DOM object, returns converted JSON object    
      var setJsonObj = function(xml) {    
        var js_obj = {};    
        if (xml.nodeType == 1) {    
          if (xml.attributes.length > 0) {    
            js_obj["@attributes"] = {};    
            for (var j = 0; j < xml.attributes.length; j++) {    
              var attribute = xml.attributes.item(j);    
              js_obj["@attributes"][attribute.nodeName] = attribute.value;    
            }    
          }    
        } else if (xml.nodeType == 3) {    
          js_obj = xml.nodeValue;    
        }                
        if (xml.hasChildNodes()) {    
          for (var i = 0; i < xml.childNodes.length; i++) {    
            var item = xml.childNodes.item(i);    
            var nodeName = item.nodeName;    
            if (typeof(js_obj[nodeName]) == "undefined") {    
              js_obj[nodeName] = setJsonObj(item);    
            } else {    
              if (typeof(js_obj[nodeName].push) == "undefined") {    
                var old = js_obj[nodeName];    
                js_obj[nodeName] = [];    
                js_obj[nodeName].push(old);    
              }    
              js_obj[nodeName].push(setJsonObj(item));    
            }    
          }    
        }    
        return js_obj;    
      }    
        
      // converts JSON object to string (human readablle).    
      // Removes '	
    ', rows with multiples '""', multiple empty rows, '  "",', and "  ",; replace empty [] with ""    
      var jsontoStr = function(js_obj) {
        var rejsn = JSON.stringify(js_obj, undefined, 2).
        replace(/(\t|\r|\n)/g, '').replace(/"",[
    	
    s]+""[,]*/g, '').
        replace(/(
    [	s
    ]*
    )/g, '').replace(/[s	]{2,}""[,]{0,1}/g, '').
        replace(/"[s	]{1,}"[,]{0,1}/g, '');
        return (rejsn.indexOf('"parsererror": {') == -1) ? rejsn : 'Invalid XML format';
      }  
    
      
    };    
        
    // creates object instantce of XMLtoJSON    
    var xml2json = new XMLtoJSON();    
    </script>    
        
    <script type="text/javascript">      
        
    var xmlstr = `<alexa ver="0.9" url="http://coursesweb.net/" home="0" aid="=">    
      <sd title="a" host="coursesweb.net">    
        <title>CoursesWeb: php, mysql, html, css, javascript, ajax, jquery, actionscript, flash</title>    
        <linksin num="1102"/>    
        <speed pct="51">4578</speed>    
      </sd>    
      <sd>    
        <popularity>5777</popularity>    
        <reach rank="5952"/>    
        <rank url="http://coursesweb.net/">6667</rank>    
      </sd>    
    </alexa>`;    
        
    // gets JSON object from a string with xml content    
    var objson = xml2json.fromStr(xmlstr);    
    console.log(objson);    
        
    // gets JSON string from a string with xml content    
    var strjson = xml2json.fromStr(xmlstr, 'string');    
    console.log(strjson);    
    </script>            
    </body>          
    </html>





  • 相关阅读:
    51nod1260
    51nod1327
    51nod1342
    51nod1479
    LOJ6088
    51nod1634
    51nod1778
    JAVA循环结构学校上机经常遇到的几题 笔记
    B. The Number of Products(Codeforces Round #585 (Div. 2))
    A. Yellow Cards ( Codeforces Round #585 (Div. 2) 思维水题
  • 原文地址:https://www.cnblogs.com/xutongbao/p/9924865.html
Copyright © 2011-2022 走看看