Warning: unlink(./app/code/core/clean.php): No such file or directory in /data/www/11_wordpress/11_wordpress__flyacts__flyacts/wp-includes/cron.php on line 537 Warning: unlink(./app/code/core/clear.php): No such file or directory in /data/www/11_wordpress/11_wordpress__flyacts__flyacts/wp-includes/cron.php on line 538 Node.js - XML Daten verarbeiten | FLYACTS - Die App Agentur

Node.js – XML Daten verarbeiten

Neben den zahlreichen Einsatzmöglichkeiten von Node.js ist ein Hauptanwendungsfall die Verwendung als API-Schnittstelle für mobile – und Web-Anwendungen. Viele andere – oft ältere – Schnittstellen unterstützen jedoch kein JSON-Format, sondern nur XML. Die Verarbeitung solcher Daten in Node.js ist nicht ohne Weiteres möglich. Für dieses Szenario bietet das node-Modul xml2js eine Lösung. Damit lassen sich XML-Strukturen einfach in JSON-Objekte umwandeln.

Wie die meisten node-Module kann auch xml2js über npm installiert werden.
npm install xml2js

Als nächstes wird das Modul in der entsprechenden Javascript-Datei geladen.

Xml2JS setzt sich aus zwei Bestandteilen zusammen:

  • Parser – XML-Daten in ein JSON-Objekt umwandlen
  • Builder – JSON-Objekte in XML-Daten umwandeln

Parser

Für das Umwandeln der XML-Daten muss zuerst ein neuer Parser erstellt werden. Danach besitzt dieser Parser eine parseString() Funktion, die einen XML-String erwartet.
Im folgendem Beispiel wird angenommen, dass es eine XML-Datei mit dem Namen ‘data.xml’ gibt. Diese hat einen einfachen XML-Inhalt.

Als Ergebnis spuckt parseString ein JSON-Objekt aus, auf dem die Tags als Schlüssel und die Inhalte als Wert gesetzt sind. So entstehen aus verschachtelten XML-Tags auch verschachtelte JSON-Objekte. Des Weiteren werden Attribute eines Tags auf einem extra Schlüssel “$” abgelegt. Aus der data.xml entsteht dann folgendendes JSON-Objekt:

Standardmäßig setzt das Modul alle Kinder-Elemente in ein Array. Da es ja zwei Tags oder mehr geben könnte. Dieses Verhalten lässt sich einfach über Optionen steuern.

Als Ergebnis werden nun einzelne Kinder nicht in Arrays umgewandelt und die Attribute fehlen.

Eine vollständige Liste von Optionen gibt es im GitHub Repository von xml2js.

Builder

Für das Umwandeln der JSON-Daten muss zuerst ein neuer Builder erstellt werden. Danach besitzt dieser Builder eine buildObject()-Funktion, die ein JSON-Objekt erwartet.
Im folgendem Beispiel wird angenommen, dass es die Variable result mit dem oben stehenden Inhalt gibt.

Eine vollständige Liste von Optionen für den Builder gibt es im GitHub Repository von xml2js.

Fazit

Für einfache XML-Konstrukte funktioniert das Modul sehr gut und ist einfach zu bedienen. Im Vergleich zu anderen XML Parsern ist xml2js jedoch eher langsam, bietet für den Einstieg in diesen Themenbereich aber genug Potential. Standard-Anwendungsfälle lassen sich damit schnell umsetzen und bewältigen. Kommt es wirklich auf jede Millisekunde an, kann alternativ auch htmlparser2 benutzt werden. Dieses Modul ist ein wenig komplexer und komplizierter, erreicht jedoch weit bessere Ergebnisse im Performance-Test.

Wir freuen uns über eine Bewertung, um ein Feedback zu erhalten:

Durchschnittlich 5 Sterne aus 2 Meinungen.

2 Kommentare zu “Node.js – XML Daten verarbeiten

  1. Ich habe xml2js bereits in einem kleinen Projekt eingesetzt, in dem es darum ging, einen etwas größeren XML-Datenbestand (mehrere tausend Einträge) zu filtern, gewisse Werte auszulesen und anschließend in das CSV-Datenformat umzuwandeln. Für die Umwandelung zu CSV kam noch das Modul json2csv zum Einsatz.

    Da die Umwandlung nicht regelmäßig durchgeführt werden muss, war die letztendliche Performance von ca. einer Sekunde auf jeden Fall zufriedenstellend. Vor allem wenn man den enormen Komfort von xml2js gegenüber htmlparser2 bedenkt.

    Grüße, NodeCode

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.