0

Javaで2つのxml文字列を比較するという非常に具体的な要件があります。2つのxml文字列があります。オリジナルおよび変更。元のxml文字列を変更されたものと比較し、何が変更されたかを確認する必要があります。

例えば:

元のxmlは

   <Mycontacts>
        <contact>
           <firstName>Robert</firstName>
           <PhoneNumber>9053428756</PhoneNumber>
           <lastName>Bobbling</lastName>
           <mobile>4168014523</mobile>
        </contact>
        <contact> 

           <firstName>Lily</firstName>
           <PhoneNumber>9053428756</PhoneNumber>
           <lastName>Bobbling</lastName>
           <mobile>4168014523</mobile>
        </contact>
    </Mycontacts>

変更されたxml:

    <Mycontacts>
        <contact>
           <firstName>Robert</firstName>
           <PhoneNumber>40454321333</PhoneNumber>
           <lastName>Bobbling</lastName>
           <mobile>4168014523</mobile>
        </contact>
      </Mycontacts>

ここで1つの連絡先が変更され、1つのIDが削除されたため、2つのxmlツリーを作成します。1はmodify_xmlで、1はdeletexmlです。

xmlを変更します:

     <contact>

            <firstName>Robert</firstName>
        <PhoneNumber>40454321333</PhoneNumber>
        <lastName>Bobbling</lastName>
           <mobile>4168014523</mobile>
        </contact>

xmlを削除します:

     <contact>
           <name>Lily</name>
      </contact>

これは、Java APIを使用してどのように行うことができますか?各ノードを解析し、各連絡先エントリのマップを作成することは良いオプションですか?

4

3 に答える 3

1

http://xmlunit.sourceforge.net/

于 2012-08-31T07:17:19.887 に答える
1

XML ファイルを解析して Java オブジェクトに変換し、XML レイアウトが時間の経過とともに変化しないと仮定して、それらを比較します。XStreamまたはJAXBを使用してそれを行うことができます。

于 2012-08-31T07:22:38.957 に答える
0

一般的なケースでは非常に難しい問題です。たとえば、要素名が変更されたが値が同じままであることを検出したい場合や、2 つの要素がまだ存在しているが順序が逆になっていることを検出したい場合などです。データの構造について何か知っていれば、はるかに簡単です。たとえば、どの値が識別子として機能するかを区別できるため、問題は、同じ識別子を持つ他のファイル内の要素を見つけて、どの要素を尋ねるかになります。その非識別特性が変更されました。

重要な点は、設計を試みる前に、要件についてさらに多くのことを述べる必要があるということです。

于 2012-08-31T08:34:14.283 に答える