2015-08-23 83 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工具。他可以比较文件夹和文件,以易于理解和处理的视觉文本格式呈现差异。