2013-03-13 3 views
2

Я оглядываюсь и не вижу очевидного способа разобрать XML в узле. Я предполагаю, что есть некоторый относительно прямой объект XML, который я могу передать String или url, но я не нахожу ничего подобного в спецификации. Нужна ли мне внешняя библиотека? и если да, то кого вы, ребята, порекомендуете? Мне не нужен xPath (хотя я бы не возражал), если я могу пройти дерево очевидным образом (проверьте, если nodeType == ElementNode и петля через дочерние элементы).Каков самый простой способ разобрать XML-строку в Node.js?

ответ

1

Существует множество XML-модулей, перечисленных here, где, возможно, вы найдете тот, который лучше всего подходит для вас. Популярным, о котором я знаю, является sax-js. Есть также libxml bindings, если вы уже знакомы с этой библиотекой.

+0

Я нет, но я буду смотреть на него. Огромное спасибо. –

0

Если это не абсолютное требование, что это должно быть сделано на стороне сервера, то на клиенте вы можете использовать XMLSerializer для разбора в строке и DOMParser для анализа в DOM.

XMLSerializer Пример (из DOM в строку):

var XMLS = new XMLSerializer(); 
var elem = document; 
var xml_str = XMLS.serializeToString(elem); 
console.log(xml_str); 

DomParser Пример (из строки в DOM):

var parser = new DOMParser(); 
var doc = parser.parseFromString(xml_str, "application/xml"); 
console.log(doc); 
+0

У меня нет «клиентской стороны» в моей среде. Это на самом деле анализ ответа, который возвращается к процессу cron от стороннего провайдера в форме XML. Но спасибо. :) –

+0

это не должно было быть уменьшено с учетом исходного вопроса. Работает очень хорошо. – invapid

5

я предлагаю xml2js, простой XML-объект в JavaScript конвертер. Затем вы можете перебрать полученный объект. Фрагмент кода со страницы:

var parseString = require('xml2js').parseString; 
var xml = "<root>Hello xml2js!</root>" 
parseString(xml, function (err, result) { 
    console.dir(result); 
}); 

Вы можете установить его с помощью npm install xml2js

Смежные вопросы