Arbeiten mit XML in JavaScript (Node.js): Parsen, Erstellen und Validieren

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

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 xpath


1. 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                    

Empfehlungen