XML ドキュメントに特定の XML DOM サブツリーが含まれているかどうかを確認する必要があります。このサブツリーのすべての要素と属性がドキュメントに存在することを確認する必要があるだけです。ただし、ドキュメントのサブツリーには、比較のために特定のサブツリーに一致する要素または属性がさらに存在する場合があります。そして、それらを比較からスキップしたいと思います。
これまでのところ、指定された XML ドキュメントで Node クラスによって表されるサブツリーを見つける独自のソリューションを実装しました。この Node クラスには、比較に必要な属性 (要素名、テキスト コンテンツ、子ノードのリスト、および属性のマップ) のみが含まれます。私は独自のクラスを実装しましたが、org.w3c.dom.Node は使用しませんでした。これは、テスト シナリオには不要な属性が多数含まれているため、大きすぎるためです。ルート Node 要素によって表されるサブツリーは、要素を 1 つずつ反復し、ツリー全体がチェックされるかサブツリーが見つからなくなるまで、XPath を使用して指定された XML ドキュメント内で各サブツリーが検索されます。
このソリューションは、サブツリーが存在するかどうかを確認する必要がある場合にのみうまく機能します。ただし、これを使用して、頻繁に変更される大きな構成ファイルをチェックします。変更が発生した正確な場所を見つけるのは非常に困難です。そのため、出力が向上し、違いを簡単に確認できる既存のソリューションを使用することを考えています。残念ながら、私の条件に一致するものは見つかりませんでした。
これを可能にするツールはありますか?XMLUnit について聞いたことがあり、簡単に調べましたが、他の要素や属性を無視してドキュメント内のサブツリーを見つけることができるかどうかはわかりません。可能であれば、XMLUnit でこれを行う方法の例を教えてもらえますか?