Gibt es eine JavaScript-Implementierung, um Deltas zwischen XML-Daten zu behandeln? Der Hauptpunkt besteht darin, die Existenz der Differenz zu erkennen, es spielt keine Rolle, was geändert wurde: Attribut- oder Knotenwert.JavaScript-Implementierung von XML-Unterschieden
Anforderungen sind wie folgt:
- jeder Knoten eindeutige ID haben (es ist eines der Vereinfachungen gemacht, um mehr Kandidaten-Bibliotheken zu finden)
- Deltas in Knoten überprüft werden sollen, Attribute und Knotenwerte
- Unterstützung XML-Knoten Hierarchien bis zu 3 Ebenen
- das Ergebnis der Berechnung sollte auch XML (siehe Beispiel), aber es könnte drei Arrays hinzugefügt, aktualisiert und gelöscht Knoten seiner
- ignorieren einige Unterknoten in Delta-Berechnung, zum Beispiel möchte ich nur 3 Ebenen der Hierarchie verfolgen, nicht mehr
- Änderungen Erkennung sollte nicht an die oberen Knoten weitergegeben werden, so zum Beispiel Kindknoten Änderungen sollten Elternknoten nicht aktualisiert werden
ist Beispiel dafür, wie es funktionieren sollte:
XML # 1:
<node id="0">
<node id="1">
<node id="4">
<node id="23">DATA</data>
</node>
<node id="5">DATA</node>
</node>
</node>
XML # 2:
<node id="0">
<node id="1">
<node id="3">
<node id="342">DATA</data>
</node>
<node id="5" some_attribute="attr"/>
</node>
<node id="6"/>
</node >
So sollte einem Ergebnis führen, das folgende:
<result>
<added>
<id>6</id>
<id>3</id>
<id>342</id>
</added>
<updated>
<id>5</id>
</updated>
<removed>
<id>4</id>
<id>23</id>
</removed>
</result>
Während dies in JS streng möglich sein wird, bezweifle ich, dass es einfach, effizient oder zuverlässig sein wird. Können Sie uns sagen, warum Sie dies in JS tun müssen, anstatt in der offensichtlichen XSLT? – annakata
Vielleicht wird XSLT in einigen Situationen nützlich sein, aber es erfordert serverseitige Änderungen für uns, was unangemessen ist. Mein Anwendungsfall ist, dass wir eine schwergewichtige clientseitige Komponente verwenden und das vollständige erneute Rendern einer solchen Komponente langsam ist. Diese Komponente lädt bestimmte XML-Dateien, wenn sie geändert wurden. Sie sollte jedoch nur geänderte Teile erneut ausgeben, jedoch nicht vollständig. Ich denke über eine transparente Http-Proxy-Komponente eine Art "Delta-Engine" nach, aber es ist eine Frage aus einem anderen Kontext. Ich werde eine neue Frage beginnen, wenn ich hier kein Glück haben werde. –