#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.