node.js - 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"
...似乎输出总是按字母顺序排列
解决方案
推荐阅读
- r - 在闪亮的应用程序中安全地执行用户定义的代码输入
- python - 如何矢量化 for 循环
- azure - 如何在 ADF 中将一行转换为多列?
- .net - Azure.Storage.Queues:并行调用 QueueClient.SendMessageAsync
- matlab - 如何从信号中标记噪声点
- r - 在 R 交互会话中,如何访问最新表达式的值?
- java - Redis 命令超时;嵌套异常是 io.lettuce.core.RedisCommandTimeoutException: 命令在 1 分钟后超时
- computer-vision - 快速而肮脏的图像配准工具
- java - 确定通过元素的路径
- angular - “Action”类型中缺少属性“有效负载”,但在“AddItemAction”类型中是必需的