0

我正在尝试使用 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;

但这并没有给我类型属性(显然),如果

@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 回答