モジュール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']
代わりに表記法を使用して 'name' 属性にアクセスできます。result.name
私の質問は、これを正しい方法で行っているかということだと思います。
「要素に名前空間エイリアスがある場合、エイリアスと要素は「$」を使用して連結されます。たとえば、ns:element は ns$element になります」と読みました。これを行うと、属性を として読み取ることができますresult.d$name
。もし私がこの道を進んだとしたら、どうやってそうすることができたでしょうか?