0

XStreamとJavaを使用して、オブジェクトとXML要求、およびXML応答とオブジェクトを変換することを計画しています。XMLはHTTP/HTTPSを介して流れます。応答側では、あるJavaクラスにマップされるように見える「成功」応答、または別のJavaクラスにマップされるように見える「失敗」応答を取得できます。

たとえば、「ファイルリスト」リクエストの場合、肯定的な応答を受け取ることができます。

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <success>true</success>
  <files>
    <file>[...]</file>
    <file>[...]</file>
    <file>[...]</file>
  </files>
</response>

または私は否定的な応答を得ることができます例えば、

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <success>false</success>
  <error>
    <errorCode>-502</errorCode>
    <systemMessage>[...]AuthenticationException</systemMessage>
    <userMessage>Not authenticated</userMessage>
  </error>
</response>

これを処理するには、両方の場合に1つのクラスにフィールドを含める必要がありますか、それともXStreamを使用して2つの潜在的なクラスの1つを「条件付きで」作成する必要がありますか?

同じオブジェクトに両方の応答ケースのフィールドがある場合は、次のようになります。

Class Response {
  boolean success;
  ArrayList<File> files;
  ResponseError error;
  [...]
}

Class File {
  String name;
  long size;
  [...]
}

Class ResponseError {
  int errorCode;
  String systemMessage;
  String userMessage;
  [...]
}

「成功またはエラーの場合にXStreamを使用して、さまざまなオブジェクトを作成する」とはどのようなものかわかりません。どういうわけかそれを行うことは可能ですか?それは良い方法ですか、それとも悪い方法ですか?

とにかく、この成功と失敗の応答のケースに対処するためにXStreamを使用して処理する方法についてのアドバイスをいただければ幸いです。前もって感謝します!

4

2 に答える 2

0

私はXStreamを簡単に使用しただけで、かなり数年前ですが、2つの異なるクラスが必要な場合は、2つの場合に2つの異なるルートタグ(成功と失敗など)を使用しないのはなぜですか?

XStreamを使用してXMLを生成している場合、サーバー側で機能させるために必要な場合は、クラスに共通の基本クラスまたはインターフェイスを含めることができます。

于 2010-05-19T07:46:07.223 に答える
0

実際にこれを使って作業していると、最初のケース(両方のケースで1つのクラスにフィールドを含める)がうまく機能しているように見えるので、おそらくそれが進むべき道です。

これは、成功した形式と失敗した形式の両方がフィールドをResponse設定する場合であり、失敗した場合は、も返されます。successResponseError

Class Response {
  boolean success;
  ArrayList<File> files;
  ResponseError error;
  [...]
}

Class File {
  String name;
  long size;
  [...]
}

Class ResponseError {
  int errorCode;
  String systemMessage;
  String userMessage;
  [...]
}
于 2010-05-26T18:07:19.743 に答える