我已经看到有很多关于XML比较的帖子,但是我所看到的那个都没有解决我的问题。
我们有一些XML格式的文本文档(产品描述,标题和段落)正在更新(即版本化),我的任务是制作更改摘要。也就是说,我们想要获取两个后续文件并生成第三个文件;标题结构(大纲)将被保留,但只保留有变化的段落 - 应标记添加和删除。
所以我一直试图找到一种方法来同时遍历DOM树并检测添加和删除,但是我遇到了可靠地检测它们的问题。这显然是因为我应该做一个差异 - 但我不能使用普通的差异,因为我想在每个元素内部做个别差异,因为我不能使用传统的差异结果,但需要有一个完全格式化的xml摘要。
在我尝试解决“最长的常见后续问题”之前的任何提示,这将是一项艰巨的任务?
答案 0 :(得分:4)
我建议使用XMLUnit作为差异引擎。它提供了使用您自己的DifferenceListener的能力,只要两个节点不同,就会通知您{{3}}。在处理程序中,您将能够处理向目标文档添加适当的DOM节点。
答案 1 :(得分:2)
这个问题的专业解决方案 - 但它不是免费的 - 是DeltaXML产品。购买它可能比建立自己的便宜。
答案 2 :(得分:0)
事实证明,我当时 没有解决方案!同时,我已经开发了我自己的xml-diff例程,这个例程特定于我的问题,所以我最终得到了一个可行的解决方案。
然后,在2011年底,发布了这个:Slashdot: Researchers Expanding Diff, Grep Unix Tools
达特茅斯计算机科学家介绍了可以处理更复杂类型数据的grep和diff Unix命令行实用程序的变种。这些名为Context-Free Grep和Hierarchical Diff的新程序将提供解析数据块而不是单行的能力。该研究部分由谷歌和美国能源部资助。