【问题标题】:xml2js - xml tag values converted to array of jsonsxml2js - 将 xml 标记值转换为 json 数组
【发布时间】:2017-08-05 21:19:30
【问题描述】:

我正在使用以下代码将 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!"

   }
}

这里出了什么问题?

【问题讨论】:

    标签: json xml xml2js


    【解决方案1】:

    解决方案是 - 使用解析器的 {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));
    });
    

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

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 2020-03-12
      • 1970-01-01
      • 2020-11-20
      • 2016-07-03
      • 2017-11-26
      • 2012-02-27
      • 2021-12-19
      • 1970-01-01
      相关资源
      最近更新 更多