我使用以下代码将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));
});
Run Code Online (Sandbox Code Playgroud)
它返回以下结果 -
{
"root":{
"param_name":[
"Hello"
],
"param_entry":[
" xml2js!"
]
}
}
Run Code Online (Sandbox Code Playgroud)
它返回作为对象集合的值,即"param_name":[
"Hello"].
但我希望它是一个简单的键和价值形式.这是我的结果JSON应该看起来像 -
{
"root":{
"param_name":
"Hello"
,
"param_entry":
" xml2js!"
}
}
Run Code Online (Sandbox Code Playgroud)
这里出了什么问题?
解决方案是 - 使用解析器的{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));
});
Run Code Online (Sandbox Code Playgroud)
根据npm doc of xml2js - 默认设置为"true" - 因此所有子节点都放在一个数组中.通过将其设置为"false" - 如果子节点多次出现,则将它们添加到数组中.即存在多个标签.