Arbeit mit XML in TypeScript: Bibliotheken zum Parsen und Erstellen von XML

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: Überblick über Bibliotheken und praktische Beispiele

\n\n

XML (eXtensible Markup Language) bleibt ein gefragtes Format für den Datenaustausch in Unternehmenssystemen, Konfigurationsdateien und Webdiensten (SOAP, RSS/Atom). In TypeScript wird die Arbeit mit XML dank statischer Typisierung sicherer und vorhersagbarer. In diesem Artikel betrachten wir drei Hauptbibliotheken für die Arbeit mit XML in TypeScript: fast-xml-parser, xml2js und xmlbuilder2. Sie erfahren, wie Sie XML parsen, XML-Dokumente erstellen und deren Struktur validieren.

\n\n

1. Installation und Einrichtung

\n\n

Installieren Sie zunächst eine oder mehrere Bibliotheken über npm:

\n\n
npm install fast-xml-parser xml2js xmlbuilder2\nnpm install -D @types/xml2js  // Typen für xml2js (für fast-xml-parser sind Typen integriert)\n
\n\n

2. XML-Parsing mit fast-xml-parser

\n\n

fast-xml-parser ist die schnellste Bibliothek zum Parsen von XML in JavaScript/TypeScript. Sie unterstützt die Arbeit mit Attributen, Namespaces und kann XML in JSON umwandeln.

\n\n

Basis-Parsing

\n\n
import { XMLParser } from 'fast-xml-parser';\n\nconst xmlString = `<bookstore>\n  <book category="fiction">\n    <title>Krieg und Frieden</title>\n    <author>Lew Tolstoi</author>\n    <price currency="RUB">1200</price>\n  </book>\n</bookstore>`;\n\nconst parser = new XMLParser({\n  ignoreAttributes: false,  // Attribute beibehalten\n  attributeNamePrefix: '@_', // Präfix für Attribute\n});\n\nconst result = parser.parse(xmlString);\nconsole.log(result);\n
\n\n

Das Ergebnis ist ein Objekt:

\n\n
{\n  bookstore: {\n    book: {\n      '@_category': 'fiction',\n      title: 'Krieg und Frieden',\n      author: 'Lew Tolstoi',\n      price: {\n        '@_currency': 'RUB',\n        '#text': '1200'\n      }\n    }\n  }\n}\n
\n\n

Parsing mit Typisierung

\n\n
interface Book {\n  '@_category': string;\n  title: string;\n  author: string;\n  price: {\n    '@_currency': string;\n    '#text': number;\n  };\n}\n\ninterface Bookstore {\n  bookstore: {\n    book: Book | Book[];\n  };\n}\n\nconst typedResult = parser.parse(xmlString) as Bookstore;\nconsole.log(typedResult.bookstore.book);\n
\n\n

3. XML-Parsing mit xml2js

\n\n

xml2js ist eine Bibliothek mit erweiterten Funktionen, einschließlich Unterstützung für process-Funktionen und benutzerdefinierte Transformationen. Sie arbeitet asynchron.

\n\n

Asynchrones Parsing

\n\n
import { parseStringPromise } from 'xml2js';\n\ninterface XmlBook {\n  $: { category: string };\n  title: string[];\n  author: string[];\n  price: Array<{ $: { currency: string }, _: string }>;\n}\n\nasync function parseXmlData(xml: string): Promise<void> {\n  try {\n    const result = await parseStringPromise(xml, {\n      explicitArray: false,  // einzelne Elemente nicht in Arrays verpacken\n      attrkey: '$',          // Schlüssel für Attribute\n      charkey: '_'           // Schlüssel für Textinhalt\n    });\n    \n    const book = result.bookstore.book as XmlBook;\n    console.log(`Buch: ${book.title}, Autor: ${book.author}`);\n    console.log(`Preis: ${book.price._} ${book.price.$.currency}`);\n  } catch (error) {\n    console.error('Fehler beim XML-Parsing:', error);\n  }\n}\n\nparseXmlData(xmlString);\n
\n\n

4. XML-Erstellung mit xmlbuilder2

\n\n

xmlbuilder2 ist eine moderne Bibliothek zum Erstellen von XML-Dokumenten mit TypeScript-Unterstützung. Sie bietet eine verkettbare API und automatische Maskierung.

\n\n

Erstellung eines einfachen XML

\n\n
import { create } from 'xmlbuilder2';\n\nconst xml = create({ version: '1.0', encoding: 'UTF-8' })\n  .ele('catalog')\n    .ele('book', { id: '1', category: 'fiction' })\n      .ele('title').txt('Schuld und Sühne').up()\n      .ele('author').tx                    

Empfehlungen