JS操作xml对象转换为Json对象

最近在处理一个前端功能的时候,遇到了一个问题,原本的系统是使用的xml来存储数据的,而在新的系统上,想要转换为json对象存储,于是就考虑到直接将xml对象转换为json对象。

目前为止,通用的转换方式我还没有找到,只有根据已知的xml对象结构来使用for循环不断地赋值。

 1 var xml = ······;//获取xml对象
 2 var objList = [];
 3 for(var i = 0;i<xml.childNodes.length;i++){
 4     var obj = {};
 5     obj.attribute1 = xml.getAttribute("attribute1");//获取节点属性
 6     obj.attribute2 = xml.getAttribute("attribute2");
 7     obj.children = [];
 8     for(var x=0;x<xml.childNodes[i].childNodes.length;x++){
 9         var element = xml.childNodes[i].childNodes[x];
10         var child = {};
11         child.attribute1 = element.getAttribute("attribute1");
12         child.attribute2 = element.getAttribute("attribute2");
13         obj.children.push(child);
14     }
15     objList.push(obj);          
16 }

for循环可以继续嵌套下去,每一个新的json对象的属性都可以自定义,但是在getAttribute()方法中一定要填写自己所需要的存在的属性。

这样的方法看起来比较蠢,暂时先这样用吧,等到我想到了更好的方法之后在考虑替换。

2017年3月26日补充:

 1 var xml;
 2 var jsonobj;
 3 function Xml2Json(xml,jsonobj) {
 4   for(var i = 0;i<xml.childNodes.length;i++){
 5     var nodes = xml.childNodes;
 6     jsonobj.name = xml.getAttribute("name");
 7     //属性还是要根据实际情况设置
 8     jsonobj.children = [];
 9     for(var x = 0;x<nodes.length;x++){
10       jsonobj.children.push(nodes[x]);
11     }
12     if(nodes[i].hasChildNodes()){
13       Xml2Json(nodes[i],jsonobj.children[i]);
14     }
15   }
16 }

以上方法理论上可以处理无限层级的xml对象,但有一点很麻烦,就是没有把节点的属性也完整赋给json对象。

转载于:https://www.cnblogs.com/louisljw/p/6614143.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值