2015-06-28 2 views
3

Так что у меня есть XML-файл размером более 70 МБ. Я хотел бы проанализировать эти данные, чтобы в Node.js в конечном итоге сделать визуализацию данных. Для начала я подумал, что лучше использовать JSON вместо XML, потому что Node.js лучше построен для работы с JSON. Поэтому я планировал использовать модуль узла xml2json для синтаксического анализа xml в JSON, но я не могу записать файл xml в переменную, потому что он настолько велик. Я попытался сделать это со следующим кодом.Разбор большого XML-файла в Node.js

var fs = require('fs'); 


fs.readFile(__dirname + '/xml/ipg140114.xml', 'utf8', function(err, data, parseXml) { 
    if(err) { 
     return console.log(err); 
    } 
}); 

Получаю ошибку трассировки стека. Каков лучший способ получить этот файл, преобразованный в JSON, чтобы я мог разобрать его с помощью Node? Я довольно новичок в узле, поэтому дайте мне знать, если мой подход неправильный. Заранее спасибо!

ответ

0

Json2xml необходимо загрузить весь файл в памяти. Вы могли бы выделить больше памяти, но я бы рекомендовал разбор XML непосредственно из файла.

В NPM есть другие библиотеки, такие как xml-stream, которые позволят вам разобрать XML непосредственно из файла без его загрузки в память.

Моя личная проблема с xml-stream заключается в том, что она основана на GYP, что может стать проблемой, если вы пользователь Windows. Я добавил очень простой парсер под названием no-gyp-xml-stream в NPM, этот только зависит от саксофона. Но это немного рудиментарно и может не соответствовать вашим потребностям.
Я, однако, желаю улучшить его, если ему что-то нужно: https://www.npmjs.com/package/no-gyp-xml-stream

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