XML в JSON -, работа с пространствами имен xml и псевдонимами в JavaScript

Я пытаюсь преобразовать XML в JSON в node.js, используя модуль xml2js. Как обрабатывать псевдоним пространства имен при доступе к переменным?

Следующий код преобразует мой файл (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 :становится элементом ns$». Если я сделаю это, я смогу читать атрибут как result.d$name. Если бы я пошел по этому пути, как бы я это сделал?

9
задан Travis Nelson 29 June 2012 в 05:56
поделиться