2つのXMLファイルを比較する方法
- 元のXMLを左側に、変更後のXMLを右側に貼り付けるかドロップします。結果は入力に合わせて自動で更新されます。
- 無視する項目を選びます:テキスト内の空白、コメント、属性の順序。変更のない行を隠すを使うと、長い文書もコンパクトに表示できます。
- 追加・削除・変更された行の概要を確認し、左右に並んだ比較ビューで内容を確認します。左右を入れ替えで比較の方向を逆にできます。
XML差分で無視される違い
| 違い | 無視されるか |
|---|---|
| 要素間のインデントと改行 | 常に無視 |
| 属性値を囲む引用符が一重か二重か | 常に無視 |
<a/>か<a></a>か | 常に無視 |
| テキスト内の余分な空白と改行 | テキスト内の空白を無視がオンのとき(初期設定でオン) |
| コメント | コメントを無視がオンのとき |
| 属性の順序 | 属性の順序を無視がオンのとき(初期設定でオン) |
| 要素の順序 | 無視しない(移動した要素は削除と追加として表示) |
名前空間プレフィックス、&と&の違い、CDATAとエスケープされたテキストの違い | 無視しない(記述どおりに比較) |
XML比較の仕組み
両方の文書を解析し、選択したオプションで正規化したうえで、同じスペース2つのインデントで書き出します。こうして得られた行を、git diffが標準で使用しているMyers差分アルゴリズムで比較します。置き換えられた行は変更行としてペアにまとめられ、変更のない行が長く続く部分は折りたたむことができます。結果は整形後のバージョンに基づくため、行の位置が元のファイルと異なる場合があります。
よくある質問
要素の順序は比較結果に影響しますか?
はい。XMLの要素には順序があるため、移動した要素はある場所では削除、別の場所では追加として表示されます。無視できるのは属性の順序だけです。XMLでは属性の順序に意味がないためです。
見た目は同じなのに差分が出るのはなぜですか?
オプションを確認してください。対応するオプションがオフの場合、コメント、属性の順序、テキスト内の空白も差分として扱われます。また、名前空間プレフィックスや、&と&のようなエンティティの表記も、記述どおりに厳密に比較されます。
整形式でないXMLも比較できますか?
いいえ。両方の文書を先に解析する必要があります。どちらかにエラーがある場合は、その側の下に行と列が表示されるので、その場で修正するか、XML検証ツールで修正してください。
データはアップロードされますか?
いいえ。比較はブラウザ内で実行され、サーバーには何も送信されません。