0

次のように、 XStream アノテーションを使用して XML をシリアライズ/デシリアライズする Java テストを作成しようとしています。

<book>
  <title>Hello</title>
  <author>Joe Smith</author>
  <publisher city="Smallville">
      <employees>25</employees>
      <age>15</age>
  </publisher>
  <key type="1">XYZ</key>
</book>

私はそれのほとんどを機能させています。@XStreamAlias("book") を使用する Book オブジェクトがあります。Publisher オブジェクトを作成して本に追加し、関連するエイリアスを付け、市区町村の @XStreamAsAttribute アノテーションを使用します。

しかし、「鍵」を表すオブジェクトを作成しようとすると行き詰まります。基本的に、「type」という名前の属性とデータを持つ key という名前の要素が必要です。

本で、私が使用する場合:

@XStreamAlias("key")
String key;

しかし、それは(明らかに) type 属性を与えません。

@XStreamAlias("type")
@XStreamAsAttribute
String type;

その属性を Book オブジェクトに追加します (つまり、

<book type="1">
 ....
</book>

このような単一の要素に属性を追加する方法を示す例は見つかりませんでした。XStream はこれを行う方法を提供していますか?

ありがとう!

4

1 に答える 1

1

http://fahdshariff.blogspot.de/2011/12/using-xstream-to-map-single-element.htmlを参照してください(私のサイトではありません)

そこから適応された答えは次のとおりです。

@XStreamAlias("error")
@XStreamConverter(value=ToAttributedValueConverter.class, strings={"message"})
public class Error {

   String message;
   int code;
}

これにより、次の XML が生成されます。

<error code="99">This is an error message</error>
于 2013-01-23T16:35:25.533 に答える