1
是否有一些javaScript實現來處理XML數據之間的增量?主要觀點是檢測差異的存在,無論改變什麼:屬性或節點值。XML差異的JavaScript實現
要求如下:
- 每個節點都會有唯一的ID(這是爲尋求更多的候選人函數庫的簡化之一)
- 增量應該在節點進行檢查,屬性和節點值
- 支持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>
儘管這在JS中將是嚴格可行的,但我懷疑它會簡單,高效或可靠。你能告訴我們爲什麼你需要在JS中做這件事,而不是更明顯的XSLT? – annakata 2009-06-16 16:08:11
也許XSLT在某些情況下會很有用,但它需要我們改變服務器端,這是不合適的。我的用例是我們正在使用一些重量級的客戶端組件,並且對此組件進行完全重新渲染的速度很慢。該組件在更改時加載了特定的XML,但它應該僅重新渲染更改的部分,而不是完全渲染。我正在考慮透明的Http-proxy組件,它是某種「delta引擎」,但這是來自不同環境的問題。我會開始提出新的問題,如果在這裏我沒有運氣。 – 2009-06-17 16:22:02