Arbeit mit XML in TypeScript: Bibliotheken, Parsing und Erstellung von XML-Dokumenten

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeit mit XML in TypeScript: Bibliotheken und praktische Beispiele



XML (eXtensible Markup Language) bleibt ein gefragtes Format für Datenaustausch, Konfigurationsdateien und die Integration mit Altsystemen. Trotz der Beliebtheit von JSON verwenden viele Enterprise-Lösungen, SOAP-Dienste und Datenformate (z. B. SVG, RSS, XSLT) weiterhin XML. In TypeScript wird die Arbeit mit XML dank statischer Typisierung zuverlässiger und vorhersagbarer. In diesem Artikel werden wir die besten Bibliotheken zum Parsen, Erstellen und Validieren von XML-Dokumenten in TypeScript untersuchen.



Wichtige Bibliotheken für die Arbeit mit XML in TypeScript



Heutzutage gibt es mehrere ausgereifte Bibliotheken, die hervorragend mit TypeScript funktionieren. Betrachten wir drei der beliebtesten:



  • fast-xml-parser — die schnellste Bibliothek zum Parsen von XML in JavaScript/TypeScript. Unterstützt Validierung, Konvertierung in JSON und zurück.
  • xml2js — eine klassische Bibliothek mit einfacher API, die XML in JavaScript-Objekte umwandelt. Hat integrierte TypeScript-Unterstützung über @types/xml2js.
  • xmldom — eine Implementierung von DOM Level 2 für Node.js, ermöglicht die Arbeit mit XML als DOM-Baum (analog zum browserbasierten DOMParser).


Installation und Konfiguration



Installieren Sie zunächst eine der Bibliotheken über npm:



npm install fast-xml-parser xml2js xmldom @types/xml2js


Betrachten wir nun praktische Beispiele für jede Bibliothek.



Beispiel 1: Parsen von XML mit fast-xml-parser



fast-xml-parser bietet hohe Leistung und eine praktische API zur Umwandlung von XML in normale TypeScript-Objekte.



import { XMLParser, XMLBuilder, XMLValidator } from 'fast-xml-parser';

// Ursprüngliches XMLconst xmlData = `<?xml version="1.0" encoding="UTF-8"?><catalog> <book id="101"> <title>TypeScript Handbook</title> <author>Microsoft</author> <price currency="USD">29.99</price> </book> <book id="102"> <title>Node.js Design Patterns</title> <author>Mario Casciaro</author> <price currency="EUR">34.50</price> </book></catalog>`;

// Parser-Einstellungenconst parser = new XMLParser({ ignoreAttributes: false, // Attribute beibehalten attributeNamePrefix: '@_', // Präfix für Attribute textNodeName: '#text', // Name für Textknoten isArray: (tagName) => ['book'].includes(tagName) // Für <book> immer ein Array zurückgeben});

// Parsenconst result = parser.parse(xmlData);console.log(JSON.stringify(result, null, 2));

// Typisierung des Ergebnissesinterface Book { '@_id': string; title: string; author: string; price: { '@_currency': string; '#text': string; };}

interface Catalog { catalog: { book: Book[]; };}

const catalog = result as Catalog;console.log(`Erstes Buch: ${catalog.catalog.book[0].title}`);


Beachten Sie den Parameter isArray — er stellt sicher, dass das Element book immer ein Array ist, selbst wenn im XML nur ein Buch vorkommt.



Beispiel 2: Erstellung von XML mit xml2js



Die Bibliothek xml2js eignet sich gut zum Erstellen von XML aus JavaScript-Objekten. Sie verwendet Builder zur Serialisierung.



import { Builder } from 'xml2js';

// Objekt zur Umwandlung in XMLconst data = { root: { $: { version: '1.0', encoding: 'UTF-8' }, user: [ { $: { id: '1', active: 'true' }, name: 'Ivan Petrov', email: 'ivan@example.com', roles: { role: ['admin', 'editor'] } }, { $: { id: '2', active: 'false' }, name: 'Maria Sidorova', email: 'maria@example.com', roles: { role: ['viewer']

Empfehlungen