2017-02-09 5 views
0

У меня есть некоторые XML-данные, которые мне нужно обрабатывать в Node.js. Мне нужно снять конверт (SOAP), а затем просто вернуть полезную нагрузку/тело в конверт.Node.js NodeList для XML-строки

Я получаю его как документ DOM в свой код, и я легко могу найти содержимое Body и получить его в объекте NodeList.

Теперь я хотел бы вернуть NodeList как «XML-строку», но мне не удалось найти способ сделать это ... Мне в основном нужна XML.stringify() (такая же, как и JSON.stringify()), но, похоже, не существует такой функции.

Я попытался написать «stringify()» себя, но так как есть атрибуты и пространства имен в XML становится очень сложно ...

ответ

1

Это может помочь вам.

function nodeListToString(nodeList){ 
    return [].slice.call(nodeList).reduce((str, x) =>{ 
     return str+=x.outerHTML; 
    }, ''); 
} 

вызова Array.prototype.slice.call() на объекте NodeList преобразует его в массив, мы можем затем использовать массивы метод сокращения. уменьшает, а затем повторяет все в массиве, преобразуя его в желаемый формат, read up on it here.

+0

Извините, вы также можете сделать [] .slice.call() для более короткого кода. – flapjack17

+0

Спасибо! Я на самом деле не использую среду «HTML», а обычную реализацию Node.js, поэтому у меня нет доступного «.outerHTML». – Anders

+0

ah извините, я не сделал много развития, это узел, и я не уверен, что такое мыло. Когда вы говорите, что у вас есть NodeList, это массив объектов json, как показано здесь. Https://www.npmjs.com/package/soap#overriding-the-attributes-key – flapjack17