首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换为jsons数组的xml2js - xml标记值

转换为jsons数组的xml2js - xml标记值
EN

Stack Overflow用户
提问于 2017-03-15 08:34:37
回答 1查看 8.9K关注 0票数 10

我使用以下代码将xml转换为json:

代码语言:javascript
复制
var parseString = require('xml2js').parseString;

var xml = "<root><param_name>Hello</param_name><param_entry> xml2js!  </param_entry> </root>";

parseString(xml, {trim: true},function(err,result){
console.dir(JSON.stringify(result));
});

它将返回以下结果-

代码语言:javascript
复制
{  
   "root":{  
  "param_name":[  
     "Hello"
  ],
  "param_entry":[  
     " xml2js!"
  ]
     }
   }

它返回as对象集合的值,即作为"param_name":[

代码语言:javascript
复制
      "Hello"       ].

但我想把它作为一个简单的键和值形式。这就是我得到的JSON应该是-

代码语言:javascript
复制
{  
   "root":{  
      "param_name":  
         "Hello"
      ,
      "param_entry":
         " xml2js!"

   }
}

这里出了什么问题?

EN

回答 1

Stack Overflow用户

发布于 2017-03-15 13:29:52

解决方案是-为解析器使用{explicitArray:false}选项,如下所示:

代码语言:javascript
复制
var xml2js = require('xml2js');

var parser = new xml2js.Parser({explicitArray : false});
var xml = "<root><param_name>Hello</param_name><param_entry> xml2js!   </param_entry> </root>";

parser.parseString(xml,function(err,result){
    console.dir(JSON.stringify(result));
});

根据xml2js的npm -默认情况下,它被设置为"true“--所以所有子节点都放在一个数组中。通过将其设置为"false“--如果子节点多次出现,它们将被添加到数组中。也就是说,存在多个标签。

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42804620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档