Einführung in die Arbeit mit XML in der Node.js-Umgebung
XML (eXtensible Markup Language) bleibt ein gefragtes Format zum Speichern und Übertragen strukturierter Daten, insbesondere in Unternehmenssystemen, medizinischen Protokollen und älteren APIs. Im Node.js-Ökosystem gibt es mehrere ausgereifte Bibliotheken, die es ermöglichen, XML-Dokumente effizient zu parsen, zu erstellen und zu modifizieren. In diesem Artikel betrachten wir die wichtigsten Werkzeuge: fast-xml-parser, xml2js, xmlbuilder2 und xpath.
Installation der erforderlichen Pakete
Installieren Sie zunächst die Pakete über npm:
npm install fast-xml-parser xml2js xmlbuilder2 xpath1. XML-Parsing mit fast-xml-parser
fast-xml-parser ist die leistungsfähigste Bibliothek zum Parsen von XML in JavaScript. Sie unterstützt Attribute, Namensräume und die Konvertierung in JSON.
Basis-Parsing
const { XMLParser } = require('fast-xml-parser');
const xmlData = `<bookstore> <book category="fiction"> <title lang="en">The Great Gatsby</title> <author>F. Scott Fitzgerald</author> <year>1925</year> </book></bookstore>`;
const parser = new XMLParser({ ignoreAttributes: false, // Attribute beibehalten attributeNamePrefix: '@_' // Präfix für Attribute});
const result = parser.parse(xmlData);console.log(result.bookstore.book[0].title);// 'The Great Gatsby'console.log(result.bookstore.book[0]['@_category']);// 'fiction'Parsing mit Fehlerprüfung
const { XMLParser, XMLValidator } = require('fast-xml-parser');
const invalidXml = '<root><item>Unclosed';
if (XMLValidator.validate(invalidXml) === true) { const parser = new XMLParser(); const data = parser.parse(invalidXml);} else { console.error('Ungültiges XML'); // Ausgabe: true (wenn gültig) oder Fehlerobjekt}2. Die Bibliothek xml2js — bequeme Konvertierung in JSON
xml2js bietet eine callback-orientierte API und unterstützt benutzerdefinierte Parsing-Einstellungen.
const xml2js = require('xml2js');const parser = new xml2js.Parser({ explicitArray: false, // Einzelelemente nicht in ein Array packen attrkey: 'attributes'});
const xml = `<person id="123"> <name>John Doe</name> <age>30</age></person>`;
parser.parseString(xml, (err, result) => { if (err) { console.error('Parsing-Fehler:', err); return; } console.log(result.person.name); // 'John Doe' console.log(result.person.attributes.id); // '123'});Promise-Wrapper für xml2js
const { parseStringPromise } = require('xml2js');
async function parseXML(xmlString) { try { const data = await parseStringPromise(xmlString, { explicitArray: false }); return data; } catch (error) { console.error('Fehler:', error.message); }}3. XML-Erstellung mit xmlbuilder2
xmlbuilder2 ist eine moderne Bibliothek zur Generierung von XML-Dokumenten mit einer verkettbaren Schnittstelle (fluent API).
Einfache XML-Erstellung
const { create } = require('xmlbuilder2');
const doc = create({ version: '1.0', encoding: 'UTF-8' }) .ele('catalog') .ele('book', { id: 'b1' }) .ele('title').txt('JavaScript: The Good Parts').up() .ele('author').txt('Douglas Crockford').up() .ele('price', { currency: 'USD' }).txt('29.99').up() .up() .end({ prettyPrint: true });
console.log(doc);Ergebnis:
<?xml version="1.0" encoding="UTF-8"?><catalog> <book id="b1"> &l