MCPcopy Create free account
hub / github.com/CoderLine/alphaTab / _parseDom

Method _parseDom

packages/alphatab/src/importer/GpifParser.ts:187–239  ·  view source on GitHub ↗
(dom: XmlDocument)

Source from the content-addressed store, hash-verified

185 }
186
187 private _parseDom(dom: XmlDocument): void {
188 const root: XmlNode | null = dom.firstElement;
189 if (!root) {
190 return;
191 }
192 // the XML uses IDs for referring elements within the
193 // Therefore we do the parsing in 2 steps:
194 // - at first we read all model elements and store them by ID in a lookup table
195 // - after that we need to join up the information.
196 if (root.localName === 'GPIF') {
197 this.score = new Score();
198 // parse all children
199 for (const n of root.childElements()) {
200 switch (n.localName) {
201 case 'Score':
202 this._parseScoreNode(n);
203 break;
204 case 'MasterTrack':
205 this._parseMasterTrackNode(n);
206 break;
207 case 'BackingTrack':
208 this._parseBackingTrackNode(n);
209 break;
210 case 'Tracks':
211 this._parseTracksNode(n);
212 break;
213 case 'MasterBars':
214 this._parseMasterBarsNode(n);
215 break;
216 case 'Bars':
217 this._parseBars(n);
218 break;
219 case 'Voices':
220 this._parseVoices(n);
221 break;
222 case 'Beats':
223 this._parseBeats(n);
224 break;
225 case 'Notes':
226 this._parseNotes(n);
227 break;
228 case 'Rhythms':
229 this._parseRhythms(n);
230 break;
231 case 'Assets':
232 this._parseAssets(n);
233 break;
234 }
235 }
236 } else {
237 throw new UnsupportedFormatError('Root node of XML was not GPIF');
238 }
239 }
240
241 private _parseAssets(element: XmlNode) {
242 for (const c of element.childElements()) {

Callers 1

parseXmlMethod · 0.95

Calls 12

_parseScoreNodeMethod · 0.95
_parseMasterTrackNodeMethod · 0.95
_parseTracksNodeMethod · 0.95
_parseMasterBarsNodeMethod · 0.95
_parseBarsMethod · 0.95
_parseVoicesMethod · 0.95
_parseBeatsMethod · 0.95
_parseNotesMethod · 0.95
_parseRhythmsMethod · 0.95
_parseAssetsMethod · 0.95
childElementsMethod · 0.80

Tested by

no test coverage detected