как в node.js обрабатывать большие XML-файлы?

121
02 декабря 2020, 08:00

есть большой XML-файл:

<?xml version="1.0" ?>
<catalog xmlns="http://www.mynamespace.com/xml/my-catalog" catalog-id="my-catalog">
    <category category-id="cat-00000001">... content1 ...</category>
    <category category-id="cat-00000002">... content2 ...</category>
    <category category-id="cat-00000003">... content3 ...</category>
    ...
</catalog>

Каждый узел нужно обработать, желательно в потоке не строя DOM для всего документа. поробовал разные npm-модули - очень неудобно для моих целей...

что конкретно я имею ввиду под обработкой узлов:

  • на входе и на выходе xml-файл
  • обычое редактирование - удаление, добавление узлов, аттрибутов, контента... возможно с условием. например: если содержит узел true, то стереть узел ....

почему мне не нравятся event-driven XML-parser:

  1. обычно нужно два модуля(бывают и два в одном) - один разбирает, другой собирает.
  2. если мне нужно изменить один узел в гигабайтном файле, эти модули перлопачиваюти эти гигабайты: xml -> js, js -> xml... ... я не уверен, что они все делают правильно!

Заголовок файла тот-же что и в исходном? аттрибуты, контент правильно вставили? CDATA? кодировка? комментарии? отступы не забыли? Каждый узел будет заново переписан! Каждый, Карл! Мне кажется проще сделать изменение в текстовом редакторе... но иногда нужно программно.

я бы хотел файл разбирать в потоке на куски соответствующие тегам одного уровня, и потом обрабатывать их regex или парсит и собирать

Посоветуйте пожалуйста библиотеки, примеры кода или поделитесь опытом.

READ ALSO
Как с помощью JS определить ip пользователя?

Как с помощью JS определить ip пользователя?

Хочу сделать так что бы JS определял Ip пользователя при запуске скрипта, но не знаю как это сделатьПодскажете?

118
Импортировать картинку в поле image из canvas, Яндекс шаринг

Импортировать картинку в поле image из canvas, Яндекс шаринг

Столкнулась с проблемой, что изображение, получаемое из canvas, не добавляется в поле imageКод следующий (VueJS v

125
Не работает селектор this

Не работает селектор this

Мне нужно взять значение из заголовка и вставить его в значение атрибута

96