如何使用XStream注释java对象以将属性添加到单个元素?

时间:2012-11-14 01:15:19

标签: java xstream

我正在尝试使用XStream注释创建一个java测试 来序列化/反序列化XML,如:

<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注释。

但是,当我尝试创建代表“密钥”的对象时,我会陷入困境。基本上我需要一个名为key的元素,其属性名为“type”和数据。

书中的

,如果我使用:

@XStreamAlias("key")
String key;

但是这并没有给我类型属性(显然)和if

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

我将该属性添加到Book对象(即

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

我没有找到任何显示如何将属性添加到单个元素的示例。 XStream是否提供了这样做的方法?

谢谢!

1 个答案:

答案 0 :(得分: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>