文件验证/比较

时间:2011-06-21 15:32:42

标签: c# docx

有没有办法比较两个docx文档?

我有一个从模板文档生成的文件,其中一些部分通过书签动态删除,并阻止模板中的部分。

我想将生成的文档与另一个docx进行比较,这将是预期的结果。

我模糊地听说校验和比较,

有没有人会对比较2个文件的最佳方法有一些指示?

由于

2 个答案:

答案 0 :(得分:1)

您可以使用XMLUnit for .NET来比较主要文档部分(document.xml)。

您可以使用OpenXML SDK或System.IO.Packaging获取主文档部分。有关后一种方法的更多信息,请参阅C# to replace strings of text in a docx

答案 1 :(得分:0)

  

我模糊地听说过校验和   比较。

校验和适用于逐字节精确度的比较。如果这是您要查找的内容,则将每个文档的字节读入流中,并使用SHA256ManagedMD5CryptoServiceProvider为每个文件生成校验和。如果两个校验和相同,那么这两个文档很可能是相同的。

MD5不适用于安全目的(http://en.wikipedia.org/wiki/MD5 - 请参阅“安全性”)但是对于您控制两个文档的比较目的应该没问题。另请注意,校验和不是100%唯一的,因此总是存在远程碰撞的可能性。

  

我有一个是从a生成的   模板文档中的某些部分   通过动态删除   书签和阻止部分   模板。

但是,如果您要逐节进行比较,那么您可能需要将文档打开为超过原始字节,并以结构化方式处理它,例如,逐节。您可以使用c#以编程方式打开.docx文件(使用各种方法);也许你可以对每个部分的内容执行校验和?

该主题讨论使用c#:How can a Word document be created in C#?创建/操作.docx文件。可以使用相同的工具来读取一个。