2015-08-23 84 views
-2

我正在研究C#中的同步程序,該程序應該能夠在服務器和多個客戶端之間同步文件夾和文件。問題是隻有服務器上的內容應該發送給客戶端。 我想比較兩個XML文件並在新的XML文件中得到結果。 我希望能夠看到文件1和2之間有什麼區別,只能得到文件1中缺少文件2的內容。如下所示。 XML文件1 - XML文件2 = XML文件3C#比較兩個XML文件

XML文件1 - 這是所有文件和子文件夾

的視圖
<Sync> 
    <file name="file1.exe" md5="301977135631682077322272102379711510898" /> 
    <file name="file2.gif" md5="198293138141481761522471841122211715365100" /> 
    <file name="file3.docx" md5="2421394619714515234127212777726185214112245"/> 
    <file name="file4.docx" md5="192234220151104120192442391857158145211131" /> 
    <file name="file5.txt" md5="168303710116177182411519715713816617416674" /> 
    <file name="file6.bmp" md5="1792011292231121792151655125106213101156216" /> 
    <file name="file7.txt" md5="33187821621591371126952143181189193108" /> 
    <file name="file8.ini" md5="2282341791393124126722550279185251209139" /> 
    <folder name="folder1"> 
    <file name="file9.reg" md5="17553712523921412874140137119129165185219" /> 
    <folder name="folder2"> 
     <file name="file10.png" md5="13197182105223023710241762821170145139202" /> 
     <file name="file11.docx" md5="205130242851746130180151132127731757621530" /> 
    </folder> 
    </folder> 
</Sync> 

XML文件2 - 這是所有其他的圖文件和子文件夾

<Sync> 
    <file name="file1.exe" md5="301977135631682077322272102379711510898" /> 
    <file name="file7.txt" md5="33187821621591371126952143181189193108" /> 
    <file name="file8.ini" md5="2282341791393124126722550279185251209139" /> 
    <folder name="folder1"> 
    <file name="file9.reg" md5="17553712523921412874140137119129165185219" /> 
     <file name="file13.docx" md5="205130242851746130180151132127731757621530" /> 
    <folder name="folder2"> 
     <file name="file11.docx" md5="205130242851746130180151132127731757621530" /> 
     <file name="file12.docx" md5="205130242851746130180151132127731757621530" /> 
    </folder> 
    </folder> 
</Sync> 

XML文件3的路徑 - 這是文件中的所有文件和子文件夾的視圖1缺少

<Sync> 
    <file name="file2.gif" md5="198293138141481761522471841122211715365100" /> 
    <file name="file3.docx" md5="2421394619714515234127212777726185214112245"/> 
    <file name="file4.docx" md5="192234220151104120192442391857158145211131" /> 
    <file name="file5.txt" md5="168303710116177182411519715713816617416674" /> 
    <file name="file6.bmp" md5="1792011292231121792151655125106213101156216" /> 
    <folder name="folder1"> 
    <folder name="folder2"> 
     <file name="file10.png" md5="13197182105223023710241762821170145139202" /> 
    </folder> 
    </folder> 
</Sync> 
+0

你的問題是什麼? https://stackoverflow.com/help/how-to-ask –

+0

購買Beyond Compare 4的副本。 –

+0

感謝您告訴我們您的工作內容。當你陷入困境並想發佈一些你需要幫助的代碼時,我們就在這裏。 – SQLMason

回答

-1

這樣做的最簡單的方法是使用diffgrams

這裏是例子Compare XML fragments & return differences

關鍵代碼:

var result = new XDocument(); 
var writer = result.CreateWriter(); 

var diff = new Microsoft.XmlDiffPatch.XmlDiff();  
diff.Compare(node1, node2, writer); 

writer.Flush(); 
writer.Close(); 
0

可以使用WinMerge誰是一個開源識別和合並的Windows工具。他可以比較文件夾和文件,以易於理解和處理的視覺文本格式呈現差異。