XML データ間のデルタを処理するための JavaScript 実装はありますか?
主なポイントは、違いの存在を検出することです。何が変更されたかは問題ではありません。attribute or node value.
要件は次のとおりです。
- 各ノードには一意の ID があります (これは、より多くの候補ライブラリを見つけるために行われた単純化の 1 つです)
- ノード、属性、およびノード値でデルタをチェックする必要があります
- 3 レベルまでの XML ノード階層をサポート
- 計算結果も XML である必要がありますが (例を参照)、追加、更新、および削除されたノードの 3 つの配列である可能性があります。
- デルタ計算でいくつかのサブノードを無視します。たとえば、階層の 3 レベルだけを追跡したいのですが、それ以上は追跡したくありません。
- 変更検出は上位ノードに伝播されるべきではありません。たとえば、子ノードの変更によって親ノードが更新されないようにする必要があります。
これがどのように機能するかの例を次に示します:
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 >
したがって、結果は次のようになります。
<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>