DOM konvertieren
Michael_K
- javascript
Hallo,
kennt jemand vielleicht eine Einfache JS-Bibliothek oder Beispiel zur Konvertierung von einem (XML) basierten DOM in einen anderen. Es soll kein XSLT verwendet werden. Aus meiner Sicht bietet sich hier ein Treewalker an. Bevor ich aber komplett von Null anfange, gibt es vielleicht irgendwo ein einfaches Beispiel, das man schnell anpassen bzw. erweitern kann?
Gruss und guten Rutsch Michael
Hallo Michael,
wieso kein XSLT? Für eine XML in XML Transformation ist das exakt das richtige Werkzeug.
Du kannst das XML auch in ein Document einlesen und dich mit querySelector/querySelectorAll drüber quälen, was letztlich eine andere Art ist, XPathes zu erstellen. Den XML Output kannst du dann in ein anderes XMLDocument hängen.
Bibliotheken dazu kenne ich jedenfalls keine. Verlinkt habe ich MDN, weil ich glaube, dass unser Wiki bei Erklärungen zu separaten Documents etwas schwachbrüstig ist.
Rolf
Hallo ROlf
wieso kein XSLT? Für eine XML in XML Transformation ist das exakt das richtige Werkzeug.
Na ja, XSLT ist ziemlich unflexibel und die Syntax müsste ich mir erst einmal wieder in Erinnerung bringen. Da bevorzuge ich den DOM oder gar einen guten SAX-Parser. DOM hat den Nachteil, dass es relativ viel Ressourcen beansprucht, weil das Dokument/DOM zunächst komplett in den Speicher muss.
Ich weiss, es gab bei XSLT so eine Art Standard-Template, bei dem grundsätzlich das XML kopiert wurde und man für bestimmte Elemente dann eigene Transformationen mit xsl:apply-template hinzufügen konnte. Aber das kann ich nicht mehr finden und ich müsste mich wirklich wieder einlesen in XPath und den weniger intuitiven "Variablen". Möchte ich eigentlich nicht wirklich.
Gruss Michael
Moin Michael,
Na ja, XSLT ist ziemlich unflexibel …
was sind denn Deine Anforderungen, dass XSLT „unflexibel“ sei?
… und die Syntax müsste ich mir erst einmal wieder in Erinnerung bringen.
Das ist natürlich ein eher schwaches Argument.
Ich weiss, es gab bei XSLT so eine Art Standard-Template, bei dem grundsätzlich das XML kopiert wurde und man für bestimmte Elemente dann eigene Transformationen mit xsl:apply-template hinzufügen konnte.
Meinst Du so etwas?
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
Zusammen mit apply-templates
ist vieles möglich.
Aber das kann ich nicht mehr finden und ich müsste mich wirklich wieder einlesen in XPath und den weniger intuitiven "Variablen". Möchte ich eigentlich nicht wirklich.
Was ist an den XSLT-Variablen „unintuitiv“? Es ist funktionale Programmierung, soweit ich weiß.
Viele Grüße
Robert
JS-Bibliothek
Node oder soll es im Browser stattfinden?
https://www.geeksforgeeks.org/convert-xml-data-into-json-using-node-js/
Lass Dich nicht täuschen. Die Lib extrahiert im dort gezeigten Beispiel die Daten in eine Variable, die dann „stringifiziert“ (als JSON ausgegeben) wird.
Du erzeugst damit ein JS-Objekt, kannst das „klassisch“ maniupulieren und dann auch als XML ausgeben.
(An anderer Stelle schreibts Du ...)
DOM hat den Nachteil, dass es relativ viel Ressourcen beansprucht, weil das Dokument/DOM zunächst komplett in den Speicher muss.
Hm. Wie viele Prozesse willst Du denn gleichzeitig rennen lassen? Und wie groß sollen die Datenmengen denn werden? Im Dateisystem herumzuwuseln und einen Dateizeiger immer wieder ein paar Byte hin- und herzurücken dürfte anno 2025 „teurer“ sein. Rechner haben häufiger 64 GibiByte Arbeitspeicher als 64 KibiByte...