首页 > 解决方案 > Node.js & camaro - 影响 xml 到 json 的转换顺序

问题描述

Node.js & camaro - 影响 xml 到 json 的转换顺序

我正在使用 node.js、camaro 和 json2csv 来解析 xml 文件并将其转换为 csv。似乎一切正常......除了......我得到了不同的输出顺序。在模板中,我定义了要获取的元素......并且我希望也能按此顺序输出值。但它似乎是ramdon。我如何影响或获得正确的输出顺序?

const transform = require('camaro')
const json2csv = require('json2csv').parse

const xml = `
<?xml version="1.0" encoding="UTF-8"?>
<testResults version="1.2">
<httpSample ts="1501597136964" lb="req_10">
  <responseData class="java.lang.String">1501597138973</responseData>
</httpSample>
<httpSample ts="1501597136964" lb="req_10">
  <responseData class="java.lang.String">1501597139525</responseData>
</httpSample>
<httpSample ts="1501597136964" lb="req_10">
  <responseData class="java.lang.String">1501597139716</responseData>
</httpSample>
</testResults>
`
const template = {
    data: ['//httpSample', {
        ts: '@ts',
        lb: '@lb',
        resp: 'responseData'
    }]
}

const result = transform(xml, template)
const csv = json2csv(result.data)

console.log(result);

{ data:
   [ { lb: 'req_10', resp: '1501597138973', ts: '1501597136964' },
     { lb: 'req_10', resp: '1501597139525', ts: '1501597136964' },
     { lb: 'req_10', resp: '1501597139716', ts: '1501597136964' } ] }   

console.log(csv)         
"lb","resp","ts"
"req_10","1501597138973","1501597136964"
"req_10","1501597139525","1501597136964"
"req_10","1501597139716","1501597136964"    

Desirerd order:
"ts","lb","resp"

...似乎输出总是按字母顺序排列

标签: node.jsxmlcsv

解决方案



推荐阅读