XML ファイルの比較
比較ツールを使用して XML テキスト ファイルのペアを比較できます。比較ツールは、この結果を処理して、ファイルの相違点の調査に使用できるレポートを作成します。XML ファイルをテキスト比較または階層的な XML 比較を使用して比較できます。
現在のフォルダー ブラウザーや比較ツールから、あるいは関数 visdiff
を使用してプログラムにより、XML 比較ツールにアクセスすることができます。
この XML 比較は、以下の論文に記述された "Chawathe" アルゴリズムを使用してファイルを比較します。
Change Detection in Hierarchically Structured Information, Sudarshan Chawathe, Anand Rajaraman, and Jennifer Widom; SIGMOD Conference, Montreal, Canada, June 1996, pp. 493-504. |
この会議論文は、1995 年に発表された研究結果に基づいています。http://dbpubs.stanford.edu:8090/pub/1995-45
を参照してください。
XML 比較レポートは比較ツールに表示されます。比較ツールの詳細については、ファイルやフォルダーの比較とファイルのマージを参照してください。
XML 比較レポートは、2 つの XML ファイルの相違部分を階層ビューで示します。このレポートには、ファイルの一致する部分は示されません。
ファイルが同一であるか、改行のみが異なる場合、相違点がないことを報告するメッセージが表示されます。
メモ
ファイルの変更が著しい場合、以前一致していたセクション間のマッチが解析で検出されない可能性もあります。
Chawathe 解析における変更の検出は、スコアリング アルゴリズムに基づきます。Chawathe スコアがしきい値を上回ると、項目がマッチします。Chawathe のアルゴリズムの実装では、しきい値を定義する比較パターンを使用しています。
比較する XML ファイルの選択
現在のフォルダー ブラウザーから
現在のフォルダー ブラウザーで 2 つのファイルを比較するには、次を行います。
同じフォルダー内の 2 つのファイルの場合は、ファイルを選択して右クリックし、[選択したファイル/フォルダーを比較] を選択します。
異なるフォルダー内のファイルを比較するには、次を行います。
ファイルを選択して右クリックし、[比較対象を指定] を選択します。
[比較するファイルまたはフォルダーの選択] ダイアログ ボックスで、比較する 2 番目のファイルを選択します。
[比較タイプ]
[XML テキスト比較]
を選択します。[比較] をクリックします。
XML 比較ツールはファイルに対して解析を実行し、比較ツールでレポートを表示します。右クリックして XML 比較ツールで開いたファイルは、レポートの右側に表示されます。
テキスト、MAT、バイナリなど、他のファイル タイプの比較ツールによる比較の詳細については、ファイルやフォルダーの比較とファイルのマージを参照してください。
比較ツールを使用した比較
比較ツールを使用してファイルを比較するには、MATLAB® ツールストリップの [ファイル] セクションで [比較] ボタンを選択します。ダイアログ ボックスで、比較するファイルを選択します。
比較対象として選択するファイルが XML ファイルであり、[XML テキスト比較]
を選択する場合、XML 比較ツールはその XML ファイルの Chawathe 解析を実行してレポートを生成します。
コマンド ラインを使用した比較
XML ファイルをコマンド ラインから比較するには、以下を入力します。
visdiff(filename1, filename2, 'xml')
ここで、filename1
および filename1
は XML ファイルです。
比較の種類の変更
現在のフォルダー ブラウザーまたは関数 visdiff
のいずれかを使用して、比較する XML ファイルを 2 つ指定する場合、比較ツールは選択したファイルに対して既定の比較タイプを実行します。XML ファイルをテキスト比較または階層的な XML 比較を使用して比較できます。
比較タイプを変更するには、比較ツールから新規比較を作成するか、現在のフォルダー ブラウザーの [比較対象を指定] オプションを使用します。[比較するファイルまたはフォルダーの選択] ダイアログ ボックスで、比較タイプを変更できます。[比較] をクリックする前に、[XML テキスト比較]
を選択します。
XML 比較レポートの移動
XML 比較レポートには変更のみが表示されます。レポートは 2 つの XML テキスト ファイル間の相違点についての階層ビューであり、元の XML データの階層ビューではありません。
"相違点を順に確認する" には、ツールストリップの [比較] タブを使用します。次または前の相違点のグループに移動するには、[比較] タブの [ナビゲート] セクションで、矢印ボタンをクリックして前または次の相違点に移動します。
また、階層ツリーで項目をクリックして選択することもできます。
選択した項目はボックスで強調表示される。
選択した項目がマッチしたペアの一部だった場合、左右両方のツリー内でボックスで強調表示される。
レポート項目の強調表示は、それぞれの相違点の性質を次のように示します。
レポート項目のタイプ | 強調表示 | メモ |
---|---|---|
変更済み | 紫 | 変更された項目は、マッチしたペアで、2 つのファイル間に差分があるものです。変更済みの項目を選択すると、両方のツリーのボックス内でその項目が強調表示されます。 |
挿入済み | 青 | マッチしない項目を選択すると、片方のツリーにのみボックスで強調表示されます。 |
削除 | 黄 | |
コンテナー | なし | 強調表示されていない行は、他の変更済みの項目またはマッチしない項目を含むコンテナー項目を示します。 |
次の関数の [比較] タブを使用します。
リフレッシュ — もう一度 Chawathe 解析を実行して、比較レポートをリフレッシュします。
左右交換 — 左右を交換して比較を再実行します。Chawathe 解析をもう一度実行します。
名前を付けて保存 、 HTML — [保存] ダイアログ ボックスを開き、XML 比較レポートを印刷可能なバージョンとして保存するかどうかを選択できます。このレポートは、比較の記録を印刷またはアーカイブするための、Chawathe アルゴリズムによって検出された相違点の非対話型 HTML ドキュメントです。
名前を付けて保存 、 ワークスペース変数 — XML 比較の結果をワークスペースにエクスポートします。
[ナビゲート] セクションで矢印ボタンをクリック (または上方向キーか下方向キーを押す) し、前の相違点または次の相違点に移動します。
選択したパラメーターの比較 — 現在選択されているパラメーターのペアについての新しいレポートを開きます。長い文字ベクトルやスクリプトなど、パラメーター ペインのすべての詳細をレポートに表示できない場合にこれを使用します。
以下の機能には、ツールストリップの [ビュー] タブのコントロールを使用します。
すべて展開 — ツリー内のすべての項目を展開します。
ヒント
右クリックして、選択したツリー ノード内で階層を展開するか折り畳みます。
すべて折りたたむ — ツリー内のすべての項目を折り畳み、可能な限り最もコンパクトなビューにします。
メモ
ファイルの変更が著しい場合、以前一致していたセクション間のマッチが解析で検出されない可能性もあります。
比較ログ ファイルを zip ファイルに保存
一時的な XML 比較ファイルは、
に蓄積されます。これらの一時ファイルは、関連する比較レポートを閉じると削除されます。tempdir
/MatlabComparisons/XMLComparisons/TempDirs/
XML 比較中に作成される一時ファイル (ログ ファイルなど) を圧縮して、共有やアーカイブを行うことができます。比較レポートが開いている状態で以下を入力します。
xmlcomp.zipTempFiles('c:\work\myexportfolder')
保存先フォルダーが存在しなければなりません。出力では次のように zip ファイル名が報告されます。
Created the zipfile "c:\work\myexportfolder\20080915T065514w.zip"
MATLAB エディターで最後の比較についてのログ ファイルを表示するには、以下を入力します。
xmlcomp.showLogFile
ワークスペースへの結果のエクスポート
XML 比較の結果を MATLAB ベース ワークスペースにエクスポートするには、次を行います。
[比較] タブの [比較] セクションで、[名前を付けて保存] 、 [ワークスペース変数] を選択します。
[入力変数名] ダイアログ ボックスが表示されます。
ダイアログ ボックスでエクスポートするオブジェクトの名前を指定し、[OK] をクリックします。この操作により、XML 比較の結果がワークスペース内の
xmlcomp.Edits
オブジェクトに保存されます。
xmlcomp.Edits
オブジェクトには、ファイル名、適用されたフィルター、2 つの XML ファイル間で異なる階層ノードなど、XML 比較についての情報が含まれます。
比較ツールを開かずにコマンド ラインで xmlcomp.Edits
オブジェクトを作成するには、以下を入力します。
Edits = xmlcomp.compare(a.xml,b.xml)
xmlcomp.Edits のプロパティ | 説明 |
---|---|
Filters | フィルターの構造体配列の配列。各構造体には名前と値の 2 つのフィールドがあります。 |
LeftFileName | XML にエクスポートされる左側のファイルのファイル名。 |
LeftRoot | 左側のツリーのルートを参照する xmlcomp.Node オブジェクト。 |
RightFileName | XML にエクスポートされる右側のファイルのファイル名。 |
RightRoot | 右側のツリーのルートを参照する xmlcomp.Node オブジェクト。 |
TimeSaved | 結果がワークスペースにエクスポートされた時間。 |
Version | xmlcomp.Edits オブジェクトの MathWorks® リリース固有のバージョン番号。 |
xmlcomp.Node のプロパティ | 説明 |
---|---|
Children | 子ノードへの xmlcomp.Node 参照の配列 (存在する場合)。 |
Edited | boolean — Edited = true の場合、ノードが挿入されているか、変更済みのマッチしたペアの一部であるかのいずれかです。 |
Name | ノードの名前。 |
Parameters | パラメーター構造体配列の配列。各構造体には名前と値の 2 つのフィールドがあります。 |
Parent | 親ノードへの xmlcomp.Node 参照 (存在する場合)。 |
Partner | マッチした場合の Partner は、他のツリー内でマッチしたパートナー ノードへの xmlcomp.Node 参照です。それ以外の場合、空 [] です。 |