【JS】使用javascript将xml转为json

来源:互联网 发布:北塔软件 编辑:程序博客网 时间:2024/05/29 19:07
<span style="white-space:pre"></span>// Changes XML to JSONfunction xmlToJson(xml) {// Create the return objectvar obj = {}; if (xml.nodeType == 1) { // element// do attributesif (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) { // textobj = xml.nodeValue;} // do childrenif (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;};


下面的XML为:

<span style="white-space:pre"></span><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></span>
通过上面的函数转换后的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}}}]}




0 0
原创粉丝点击