我有一个这样的课程:
public class revision{
long number;
String comment;
... getters and setters
}
我想让xstream结果像这样:
<revision comment="value of comment">
121556
</revision>
但是,由于number是字段,因此强制我将其写在<number>
标记中。
我用它来构建xml:
XStream xstream = new XStream(new DomDriver("UTF-8"));
xstream.useAttributeFor(Revision.class, "comment");
是否有可能不显示标签?
答案 0 :(得分:2)
您需要为revision
课程注册ToAttributedValueConverter
。此转换器允许您指定应该映射到元素的字符内容的类的单个属性,并且所有其他属性都映射到元素上的属性。最简单的方法是使用注释:
@XStreamConverter(value=ToAttributedValueConverter.class, strings={"number"})
public class revision {
// class body as before
}
并告诉XStream
实例使用
xstream.processAnnotations(revision.class);
启用此转换器后, 需要useAttributeFor
调用,因为转换器会自动使用number
以外的所有属性。
如果您不想使用注释,那么您可以在XStream
实例上使用方法调用来配置转换器,您只需从xstream
中提取各种帮助程序并将其传递给显式构造函数(如果需要,注释处理器会自动将这些内容传递给转换器)
xstream.registerConverter(new ToAttributedValueConverter(
revision.class, xstream.getMapper(), xstream.getReflectionProvider(),
xstream.getConverterLookup(), "number"));