1

私は SynonymsRequest と呼ばれる XML Beans Interface を持っています:

public interface SynonymsRequest extends org.apache.xmlbeans.XmlObject {...}

SynonymsRequest の 2 つのインスタンスが等しいかどうかをテストします。

SynonymsRequest s1 = SynonymsRequest.Factory.newInstance();
s1.setQueryText("blub");
s1.setRequesterId(BigInteger.valueOf(1));       
SynonymsRequest s2 = SynonymsRequest.Factory.newInstance();
s2.setQueryText("guck");
s2.setRequesterId(BigInteger.valueOf(1));

私は次のことを試しました:

  1. assertTrue(s1.equals(s2));=> アサーションが通らない
  2. assertEquals(0, s1.compareTo(s2));=> ClassCastException をスローします
  3. assertEquals(0, s1.compareValue(s2));=> アサーションはパスしません (2 を返し、比較できません)
  4. assertTrue(s1.valueEquals(s2));=> 2 つのインスタンスが等しいかどうかに関係なく、常に true を返します

では、これを行う適切な方法は何ですか?

4

4 に答える 4

3

プログラムのパフォーマンスに影響しない場合は、次のように比較できます。

assertTrue(s1.xmlText().equals(s2.xmlText()));

それ以外の場合は、独自のカスタム コンパレータを作成する必要があると思います。

于 2011-10-17T17:49:23.127 に答える
1

私が理解しているように、比較は2つの単純な値のみを比較します。目的の比較アルゴリズムを差し引くことはできません。

または、正確に何を意味するのかわかりませんか?

于 2011-10-17T16:42:51.737 に答える
0

XmlBeansは詳細な比較をサポートしていないため、独自に作成する必要があります。スキーマを意識した比較について、しばらく前にdevメーリングリストにスレッドがありましたが、何かが起こったかどうかはわかりません。

http://www.mail-archive.com/dev@xmlbeans.apache.org/msg01960.html

于 2011-10-18T19:19:51.290 に答える
0

少し前にこれに気づきました - 2 つのオブジェクトが作成時に生成された toString() メソッドを持っている場合、オブジェクトの toString() メソッドで .equals にすることができます。これらは、出力 xml が同等かどうかをチェックするため、比較的簡単に比較できます。

于 2015-03-16T00:05:48.463 に答える