vtd xml diff实现

时间:2017-06-17 02:46:18

标签: xml-parsing vtd-xml

我有相同文件的不同版本的许多VTD + XML索引,我希望实现类似diff的方法来返回版本之间已修改的节点的x路径,以及文本之间的区别在那些节点内。

我认为使用现有算法(如O(nd) difference)最好比较两个节点内的文本。因此,我设想的方法是同时遍历两个文档并存储与包含文本变体的任何节点对应的xpath。

问题是,一旦遇到新节点或已删除的节点,我如何确定该节点实际上是插入/移除的节点还是现有节点的变体?

或许我应该采取另一种方法?

1 个答案:

答案 0 :(得分:0)

也许我对你的问题的解释并不完全符合标准。但我觉得你想要做的事情可能没有简单的答案......请考虑以下XML片段

<a>
   <b>text1</b>
   <b>text1</b>
</a>

<a>
   <b>text2</b>
   <b>text1</b>
</a>

你可以说第二个XML就是第一个用text2替换为text1的XML。

但你也可以说第二个XML只是删除第一个b节点的第一个XML,将第二个b节点的text1更改为text2,然后在第二个b节点之后插入 text1

总而言之,您似乎不仅想知道有什么区别,而且还知道导致这些差异的变化。这很困难,因为你可以做的不同的事情导致相同的输出。