JavaScript将XML转成JSON的方法

  本文实例讲述了JavaScript将XML转成JSON的方法。分享给大家供大家参考。具体方法如下:

  1. JavaScript代码如下:

  

复制代码 代码如下:
// 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].length) == "undefined") {

  var old = obj[nodeName];

  obj[nodeName] = [];

  obj[nodeName].push(old);

  }

  obj[nodeName].push(xmlToJson(item));

  }

  }

  }

  return obj;

  };

  2. 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>

  3. JSON结果:

  

复制代码 代码如下:
{

  "@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

  }

  }

  }

  ]

  }

  希望本文所述对大家的javascript程序设计有所帮助。