3

私はこのようなものを持っています:

Java クラス

.....
@XStreamAlias("SOME_TAG")
    private String someAttribute;
.....

<ROOT>
    <ANOTHER_TAG>VALUE</ANOTHER_TAG>
</ROOT>

私のxmlには、この「SOME_TAG」が必要です。何らかの理由で欠落している場合は、例外をスローする必要があります。

XStreamでそれを行うことはできますか?

よろしく

4

2 に答える 2

1

私はxstreamの実験的なユーザーではありませんが、これを行います。

  1. 必要な要素を指定できるdtdファイルまたはxsdファイルを作成してから、xmlファイルをdtdまたはxsdファイルに対して検証できます。または、
  2. 検証のためにクラス内に検証メソッドを作成します。フィールドがnullであるか、その他の検証を行う必要があります。
于 2012-09-12T14:58:51.757 に答える
1

純粋に XStream を使用する場合、次の 2 つのオプションがあると思います。

  1. XStream は JDK シリアライゼーションと同じメカニズムを使用するため、Object readResolve()デシリアライズされるクラスにメソッドを簡単に実装できます。このメソッドは、オブジェクトが初期化され、すべてのフィールドが XStream によって設定された後に呼び出されるため、このメソッドを使用してsomeAttributeフィールドが有効かどうかを確認できます。有効なnull場合は、例外をスローできます。(XStream の例はこちらにあります: http://x-stream.github.io/faq.html#Serialization_initialize_transient

  2. もう 1 つの方法は、クラスのカスタムコンバーターを作成し、フィールドが入力されているかどうかを確認することです。

于 2012-09-14T09:38:01.180 に答える