2011-06-21 16 views
0

2つのdocx文書を比較する方法はありますか?文書の検証/比較

ブックマークやテンプレートを使ってセクションを動的に削除するテンプレートドキュメントから生成されたものがあります。

私は、期待される結果となる別のdocxと生成されたドキュメントを比較したいと思います。

私は漠然と

は2つの文書を比較するための最良の方法のいくつかのポインタを持っているでしょう誰もがあり、チェックサム比較のことを聞きましたか?私は漠然とチェックサム 比較のことを聞いた

おかげ

+0

[Word(VSTO)で2つのRTFドキュメントを比較する](http://stackoverflow.com/questions/4962280/comparing-two-rtf-documents-side-by-side-in)の可能な複製-word-vsto) –

+0

docx4jにはxml差分のコードが含まれています。私はそれをC#からIKVM経由で使用しています – JasonPlutext

+0

これは単体テストの目的のためか、ユーザとの違いを表示するためのものですか? – JasonPlutext

答えて

1

XMLUnit for .NETを使用して、メインドキュメントの部分(document.xml)を比較できます。

OpenXML SDKまたはSystem.IO.Packagingを使用して、主要なドキュメントパーツを手に入れることができます。後者のアプローチの詳細については、C# to replace strings of text in a docxを参照してください。

0

チェックサムは、バイト単位の正確性の比較に適しています。それがあなたが探しているものなら、各文書のバイトをストリームに読み込み、SHA256ManagedまたはMD5CryptoServiceProviderを使用して各ファイルのチェックサムを生成します。 2つのチェックサムが同じ場合、2つのドキュメントは同じである可能性が最も高いです。

MD5はセキュリティ目的(http://en.wikipedia.org/wiki/MD5 - 「セキュリティ」を参照)には適していませんが、両方のドキュメントを管理している比較目的では問題ありません。チェックサムは100%ユニークではないので、常に衝突の可能性があることに注意してください。

私はいくつかのセクションが テンプレートからブックマークとブロック部を介して動的に除去される テンプレート文書から生成されたものを有しています。

ただし、セクションごとに比較している場合は、ドキュメントを未加工バイト以上で開いて、構造化された方法で処理する必要があります。セクションごとに説明します。 c#を使用してプログラムで.docxファイルを開くことができます(さまざまな手段を使用して)。おそらくあなたは各セクションの内容に対してチェックサムを実行することができますか?

このスレッドでは、c#:How can a Word document be created in C#?を使用して.docxファイルの作成/操作について説明しています。同じツールを使用して1つを読むことができます。