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

时间:2017-03-15 08:34:37

标签: json xml xml2js

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

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));
});

它返回以下结果 -

{  
   "root":{  
  "param_name":[  
     "Hello"
  ],
  "param_entry":[  
     " xml2js!"
  ]
     }
   }

它返回作为对象集合的值,即“param_name”:[
         “你好”       ]

但我希望它是一个简单的键和值形式。 这是我的结果JSON应该看起来像 -

{  
   "root":{  
      "param_name":  
         "Hello"
      ,
      "param_entry":
         " xml2js!"

   }
}

这里出了什么问题?

1 个答案:

答案 0 :(得分:7)

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

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));
});

根据npm doc of xml2js - 默认设置为“true” - 因此所有子节点都放在一个数组中。 通过将其设置为“false” - 如果子节点多次出现,则将它们添加到数组中。 即存在多个标签。