我正在尝试使用模块 xml2js 在 node.js 中将 XML 转换为 JSON。访问变量时如何处理命名空间别名?
以下代码转换我的文件(sampleWithNamespaces.xml)
var fs = require('fs'),
xml2js = require('xml2js');
var parser = new xml2js.Parser();
fs.readFile('sampleWithNamespaces.xml', function (err, data) {
parser.parseString(data, function (err, result) {
console.dir(result);
console.log('Done');
});
});
sampleWithNamespaces.xml :
<d:student xmlns:d='http://www.develop.com/student'>
<d:id>3235329</d:id>
<d:name>Jeff Smith</d:name>
<d:language>JavaScript</d:language>
<d:rating>9.5</d:rating>
</d:student>
输出:
$ node xml2jsTest.js
{ '@': { 'xmlns:d': 'http://www.develop.com/student' },
'd:id': '3235329',
'd:name': 'Jeff Smith',
'd:language': 'JavaScript',
'd:rating': '9.5' }
Done
如果我没有命名空间别名,我可以使用符号result['d:name']
来访问“名称”属性。result.name
我想我的问题是,我这样做是否正确?
我读过“如果一个元素具有命名空间别名,则别名和元素使用“$”连接。例如,ns:element 变为 ns$element”如果我这样做,我可以将属性读取为result.d$name
. 如果我走这条路,我怎么会这样做?