我正在使用C#中的同步程序,它应该能够在服务器和多个客户端之间同步文件夹和文件。问题是只应将服务器上的内容发送给客户端。 我想比较两个XML文件并将结果放在一个新的XML文件中。 我希望能够看到文件1和2之间的区别是什么,只能从文件1中获取文件2.缺少如下所示的内容。 XML文件1 - XML文件2 = XML文件3
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 :(得分:0)
您可以使用WinMerge作为Windows的开源差异和合并工具。他可以比较文件夹和文件,以易于理解和处理的可视文本格式呈现差异。
答案 1 :(得分:-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();