@miguel_ritchie
В Node.js существует несколько способов обработки больших XML файлов:
Пример использования SAX парсера:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
const fs = require('fs'); const sax = require('sax'); const saxStream = sax.createStream(true); // true заставляет парсер распознавать сущности saxStream.on('opentag', (node) => { console.log('Открыт тег: ', node.name); }); saxStream.on('closetag', (tagName) => { console.log('Закрыт тег: ', tagName); }); const xmlStream = fs.createReadStream('large.xml') xmlStream.pipe(saxStream); |
Пример использования xml-stream:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
const fs = require('fs'); const XmlStream = require('xml-stream'); const xmlStream = fs.createReadStream('large.xml'); const stream = new XmlStream(xmlStream); stream.on('endElement: tagName', (node) => { console.log('Закрыт тег: ', node.$text); }); stream.on('textNode: tagName', (text) => { console.log('Текст внутри тега: ', text); }); |
Пример использования xml2js:
1 2 3 4 5 6 7 8 9 10 11 12 |
const fs = require('fs'); const xml2js = require('xml2js'); const xmlString = fs.readFileSync('large.xml', 'utf-8'); xml2js.parseString(xmlString, (err, result) => { if (err) { console.error(err); } else { console.log(result); } }); |
Каждый из этих подходов может быть выбран в зависимости от ваших конкретных потребностей и размера XML файла, который вам нужно обработать.