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

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

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

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

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

1 Ответ

0 голосов
/ 21 марта 2019

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

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

pnpm install --save-dev raw-loader

в вашем конфигурационном файле веб-пакета:

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

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

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

Если у вас есть тег верхнего уровня, вы можете начать копать. Другие 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.
...