Любая рекомендация для XML для JSON для Node.js? - PullRequest
23 голосов
/ 15 апреля 2011

Я установил node-xml, но не думаю, что он работает так, как я ожидаю.и у него нет примера.Любая рекомендация для xml-2-json (js) для node.js?Я также посмотрел на xml2js в npm, но он устарел, и люди сообщили, что он не работает с последней версией node.js

, кстати, я также использую экспресс.:)

Ответы [ 7 ]

16 голосов
/ 15 апреля 2011

Есть много XML-парсеров .

Как libxmljs и node-o3-xml .Последний сделан и используется Ajax.org, поэтому он должен быть стабильным.

Что касается преобразования XML в JSON, я бы порекомендовал создать структуру объекта из вашего xml, а затем вручную вызвать JSON.stringify.Это дает вам полный контроль над тем, как ваши XML-данные преобразуются в JSON.

Затем можно сохранить JSON в файле / БД или отправить его по запросу.

14 голосов
/ 22 июня 2012

libxmljs и node-o3-xml великолепны и быстры, но имейте в виду, что им обоим нужно компилировать двоичные компоненты.И если вы используете их для модуля, который будет использоваться другими, это предостережение будет еще более серьезным.

Взяв высокоуровневое представление на мгновение, помните, что узел является однопоточным.Таким образом, любой анализ XML, который вы делаете, блокирует процесс узла.Для меня это означает, что синтаксический анализ XML никогда не должен выполняться в том же процессе, что и основное приложение.Затем, когда вы перемещаете разбор XML в отдельный процесс, возможно, небольшая скорость может быть принесена в жертву в пользу простоты установки и большей переносимости.

Лично я поэтому использую sax.js - чистый синтаксический анализатор JavaScript SAX - в моей библиотеке feedparser (если вы анализируете каналы RSS / Atom / RDF, пожалуйста, попробуйте это сделать - комментарии и запросы извлечения приветствуются).И, честно говоря, при анализе чего-то такого большого, как RSS-канал, нет заметной разницы в скорости между sax.js и libxmljs.Если вы анализируете огромные XML-файлы, вы можете заметить разницу, я полагаю.Но даже тогда одна хорошая вещь в sax.js - потоковая передача.В отличие от libxmljs (последний, который я использовал), вы можете направить поток в sax.js вместо того, чтобы читать весь XML-документ в память.Если вы разбираете огромные файлы, вам это понравится!

11 голосов
/ 26 марта 2013

Где вы видите, что xml2js устарело? Он имеет недавнюю активность (по состоянию на март 2013 года) и отлично работал с узлом 0.8.

Я пользуюсь им и доволен этим!

1 голос
/ 22 января 2014

Как указывает другой автор, node-xmltojs , вероятно, лучший путь.

Если вы действительно хотите использовать JSONML, я не уверен, почему в плагине JQuery в другом ответе проголосовали: есть JSONML для узла :

npm install jsonml

Пример:

var fs = require('fs'),
  parse = require('jsonml').parse;

var jsonML = parse(fs.readFileSync('myfile.xml'));
1 голос
/ 22 июня 2012
1 голос
/ 18 апреля 2011

sblom указал out JsonML , что также стоит принять во внимание. Не уверен насчет поддержки JsonML в nodejs, но здесь уже есть плагин jQuery .

0 голосов
/ 22 января 2013

easyxml , безусловно, мой любимый.Мне нравится, как он автоматически мультирадицирует массивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...