2011-04-01 64 views
3

我見過有很多關於XML比較的文章,但是我看過的文章都沒有解決我的問題。自定義XML文件比較

我們有一些正在更新(即版本化)的XML格式的文本文檔(帶有標題和段落的產品描述),我負責製作更改摘要。也就是說,我們想要取兩個後續文件並生成第三個文件;標題結構(大綱)應予保留,但只保留有變更的段落 - 增加和刪除應加以標記。

所以我一直在試圖找到一種方式來同時漫遊DOM樹和檢測添加和刪除,但我遇到了可靠地檢測它們的問題。這顯然是因爲我應該做一個差異 - 但我不能使用一個普通的差異,因爲我想在每個元素內部做單獨的差異,因爲我不能使用傳統的差異結果,但需要一個完全格式化的XML消化。

在嘗試解決「最長的常見子序列問題」之前的任何提示,這將是一項艱鉅的任務?

回答

0

原來,我的需要當時沒有解決辦法!同時,我開發了自己的特定於我的問題的xml-diff例程,所以我最終得到了一個工作解決方案。

然後,在2011年底,這是出版:Slashdot: Researchers Expanding Diff, Grep Unix Tools

達特茅斯計算機科學家提出的grep和DIFF Unix命令行工具,可以處理更復雜的數據類型的變體。名爲Context-Free Grep和Hierarchical Diff的新程序將提供解析數據塊而非單行的功能。該研究部分由Google和美國能源部資助。

4

我建議使用XMLUnit作爲差分引擎。它提供了使用您自己的DifferenceListener的能力,當兩個節點不同時通知它。在處理程序中,您可以將適當的DOM節點添加到目標文檔中。

+0

XMLUnit是我已經看過的工具之一,但它似乎專注於單元測試視角的斷言。我會再調查一下。 – KlaymenDK 2011-04-01 14:52:53

2

這個問題的專業解決方案 - 但它不是免費的 - 是DeltaXML產品。購買它可能會比建立自己的便宜。

+0

謝謝,但我有$ 0的預算。此外,我需要將其與現有的內部解決方案集成。 – KlaymenDK 2011-04-01 14:54:09