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/xml2jsBetrachten 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'] Auch in der Bibliothek
SMS-Versand mit C# (.NET): Integration mit SMS-API-Diensten
gRPC für JavaScript (Node.js): Bibliotheken und Codebeispiele
Arbeit mit S3 und Cloud-Speichern in Go: Die Bibliothek minio-go
Arbeiten mit CSV in Java: Bibliotheken OpenCSV, Apache Commons CSV und Java Scanner