当 xml 元素被捆绑时,一些顺序会丢失。
例如,我正在阅读的 xml 具有如下元素:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<b>
<c n="1">
<v n="1">
<w>w1</w>
<w>w2</w>
<w>w3</w>
<k>w4</k>
<q>w4mod<x>a</x></q>
<w>w5</w>
<w>w6</w>
<k>w7</k>
<q>w7</q>
<q>Mod7</q>
<w>w8</w>
</v>
</c>
</b>
可以有任意数量的<w> something </w>
条目和 0 个或多个<k>something</k>
条目以及 0 个或多个<q> something </q>
条目。
但我需要保持解析中的顺序。当我使用以下代码时:
xml2js = require('xml2js'),
util = require('util');
var parser = new xml2js.Parser({explicitChildren: true}, {preserveChildrenOrder:true});
fs.readFile(__dirname + '/Test.xml', function(err, data) {
parser.parseString(data, function (err, result) {
console.log(util.inspect(result, false, null, true))
});
});
我得到:
b: {
'$$': {
c: [
{
'$': { n: '1' },
'$$': {
v: [
{
'$': { n: '1' },
'$$': {
w: [ 'w1', 'w2', 'w3', 'w5', 'w6', 'w8' ],
k: [ 'w4', 'w7' ],
q: [
{ _: 'w4mod', '$$': { x: [ 'a' ] } },
'w7',
'Mod7'
]
}
}
]
}
}
]
}
}
}
我想要的是
w: [ 'w1', 'w2', 'w3'],
k: ['w4'],
q:[ { _: 'w4mod', '$$': { x: [ 'a' ] } }],
w: [ 'w5', 'w6'],
k: ['w7'],
q: ['w7', 'Mod7'],
w: ['w8']
}
ETC
有什么方法可以维护这些信息的顺序吗?