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