Как импортировать XML с помощью загрузчика Webpack БЕЗ автоматического преобразования в JSON

#xml #webpack-4

#xml #webpack-4

Вопрос:

XML-загрузчик Webpack 4 автоматически преобразует импортированные XML-файлы в JSON.

Какими средствами я могу импортировать XML без преобразования в JSON?

Данные XML должны обрабатываться с использованием существующего, выделенного для приложения анализатора XML.

Чтобы было ясно, я определенно не хочу, чтобы загруженный результат был в формате JSON.

Ответ №1:

Это оказалось относительно просто, хотя и не так хорошо документировано.

В основном, мы полагаемся на raw-loader, поэтому (используя pnpm, чтобы избежать дублирования модулей):

 pnpm install --save-dev raw-loader
  

в вашем конфигурационном файле webpack:

 rules: [
  { test: /.xml$/,
    use: [
      'raw-loader'
    ]
  },
  

Я собираюсь использовать d3.js здесь (более декларативный, следовательно, краткий).

Способ анализа вашего xml отличается от приложения к приложению. Здесь я показываю первый шаг обработки файла в формате MusicXML с партитурой в формате partwise.

Как только у вас будет тег верхнего уровня, вы можете начать копать глубже. Другие форматы xml имеют свои собственные выделенные теги, которые вам нужно будет изучить и использовать в своем коде.

 import * as d3 from 'd3';
import score from '!!raw-loader!./path-to-file.xml';
    
var parser = new DOMParser();
var score_as_xml = parser.parseFromString(score, "application/xml");

Could use d3.select(), as should only be one "score-partwise" occurrence:
var score_partwise_tag = d3.selectAll(score_as_xml.getElementsByTagName("score-partwise"));

if ((score_partwise_tag .. and so on.