我有點被卡住,不得不使用.Net 2.0,所以LINQ xml不可用,儘管我會對它的比較感興趣...C#(.net 2.0)中的大型XML文件的差異
我不得不編寫一個內部程序來下載,提取和比較一些基本上是構建配置的大型XML文件(每個大約10M)。我第一次試圖使用庫,如Microsoft's XML diff/patch,但比較文件需要2-3分鐘,即使忽略空白,命名空間等(我每次都會忽略一個,試圖找出最快的)。我試圖實現我自己的想法 - XmlDocument對象中的節點列表,根指向直接後代(順便說一句,45000個子項)的鍵的字典,指向int以指示XML文檔中的節點位置......所有至少運行2分鐘。我最後的實現在1-2秒內完成 - 我做了一個系統進程調用,用幾行上下文進行比較,並保存這些結果以顯示(我們的開發機器包括cygwin,謝天謝地)。
我不禁想到有一個更好的,XML的具體方式來做到這一點,就像純文本差異一樣快 - 特別是因爲我真正感興趣的是名稱元素是每個直系後代的孩子,並可能爲了我的目的扔掉文件的4/5(我們只需要知道包含什麼文件,而不涉及任何其他語言或版本)
因此,和XML一樣流行,我敢肯定,那裏有人不得不做類似的事情。什麼是比較這些大型XML的快速高效方法? (prefereably開源或免費)
編輯:節點的樣本 - 我只需要找到丟失的名稱元素(有超過45K節點以及)
<file>
<name>SomeFile</name>
<version>10.234</version>
<countries>CA,US</countries>
<languages>EN</languages>
<types>blah blah</types>
<internal>N</internal>
</file>
http://stackoverflow.com/q/655141/102937 –
請提供更多的上下文。你需要什麼樣的輸出?你在尋找什麼樣的差異? – Oded
@羅伯特哈維 - 我已經通過該頁面,沒有運氣 –