Существует ли реализация javaScript для обработки различий между данными XML?
Суть в том, чтобы обнаружить наличие разницы, неважно, что было изменено: attribute or node value.
Требования следующие:
- Каждый узел будет иметь уникальный идентификатор (это одно из упрощений для поиска большего количества библиотек-кандидатов)
- Дельты должны проверяться в узлах, атрибутах и значениях узлов
- Поддержка иерархий узлов XML до 3-х уровней
- Результатом вычисления должен быть также 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>