首页 前端知识 js将XML转json的方法

js将XML转json的方法

2023-05-14 16:05:46 前端知识 前端哥 629 567 我要收藏

使用js创建易于编写,易于测试的本地移动应用程序很有趣。我的移动应用程序连接到许多社交网络API,其中一些仅提供XML响应。我的迷你“框架”使用JSON动态创建小部件,因此我需要一种将XML转换为JSON的方法。我发现了许多解决方案,但没有一个起作用。调整现有功能后,我发现了一个很好的解决方案。

重要的是要指出Titanium的Titanium.XML.DOMDocument对象实现DOM2级结构。这是神奇的XML到JSON代码:

// Changes XML to JSONfunction 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;};

我需要实现的主要更改是使用attributes.item(j)而不是使用attributes[j]我发现的大多数脚本。使用此功能,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>

成为具有以下结构的js对象是可行的:

{ "@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    }   }  } ]}

从这里可以使用js对象,但您认为合适。如果您想使用JSON字符串格式的js,可以编写以下代码:

var jsonText = JSON.stringify(xmlToJson(xmlDoc))

此功能在允许我快速忽略XML并改用JSON时非常有用。当构造嵌套子节点的属性和数组时,该函数运行良好。保持方便;在某些时候,可能需要将XML转换为JSON!

转载请注明出处或者链接地址:https://www.qianduange.cn//article/82.html
标签
jsjsonxml
评论
发布的文章

jQuery AJAX请求的统一封装

2024-02-01 12:02:53

jQuery知识学习

2024-02-01 12:02:53

JQuery——动画效果

2024-02-01 12:02:52

jQuery复习

2024-02-01 12:02:51

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!