使用JavaScript将XML转换为JSON

神奇的XML到JSON代码:

/ Changes XML to JSON
function xmlToJson(xml) {

 // Create the return object
 var obj = {};

 if (xml.nodeType == 1) { // element
  // do attributes
  if (xml.attributes.length > 0) {
  obj["@attributes"] = {};
   for (var j = 0; j < xml.attributes.length; j++) {
    var attribute = xml.attributes.item(j);
    obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
   }
  }
 } else if (xml.nodeType == 3) { // text
  obj = xml.nodeValue;
 }

 // do children
 if (xml.hasChildNodes()) {
  for(var i = 0; i < xml.childNodes.length; i++) {
   var item = xml.childNodes.item(i);
   var nodeName = item.nodeName;
   if (typeof(obj[nodeName]) == "undefined") {
    obj[nodeName] = xmlToJson(item);
   } else {
    if (typeof(obj[nodeName].push) == "undefined") {
     var old = obj[nodeName];
     obj[nodeName] = [];
     obj[nodeName].push(old);
    }
    obj[nodeName].push(xmlToJson(item));
   }
  }
 }
 return obj;
};

XML如下所示:

<ALEXA VER="0.9" URL="davidwalsh.name/" HOME="0" AID="=">
 <SD TITLE="A" FLAGS="" HOST="davidwalsh.name">
  <TITLE TEXT="David Walsh Blog :: PHP, MySQL, CSS, Javascript, MooTools, and Everything Else"/>
  <LINKSIN NUM="1102"/>
  <SPEED TEXT="1421" PCT="51"/>
 </SD>
 <SD>
  <POPULARITY URL="davidwalsh.name/" TEXT="7131"/>
  <REACH RANK="5952"/>
  <RANK DELTA="-1648"/>
 </SD>
</ALEXA>

调用方法:

// Assuming xmlDoc is the XML DOM Document
var jsonText = JSON.stringify(xmlToJson(xmlDoc))

结果:

{
 "@attributes": {
  AID: "=",
  HOME:  0,
  URL: "davidwalsh.name/",
  VER: "0.9",
 },
 SD = [
  {
   "@attributes": {
    FLAGS: "",
    HOST: "davidwalsh.name",
    TITLE: A
   },
   LINKSIN: {
    "@attributes": {
     NUM: 1102
    }
   },
   SPEED: {
    "@attributes": {
     PCT: 51,
     TEXT: 1421
    }
   },
   TITLE: {
    "@attributes": {
     TEXT: "David Walsh Blog :: PHP, MySQL, CSS, Javascript, MooTools, and Everything Else",
    }
   },
  },
  {
   POPULARITY: {
    "@attributes": {
     TEXT: 7131,
     URL: "davidwalsh.name/"
    }
   },
   RANK: {
    "@attributes": {
     DELTA: "-1648"
    }
   },
   REACH: {
    "@attributes": {
     RANK = 5952
    }
   }
  }
 ]
}
初识IaaS、PaaS和SaaS 生活,其实就是一地鸡毛

评论

0
请遵守社区规范,文明评论。含违禁词的内容将进入审核队列。
0/2000

文章目录

    文章目录