gpt4 book ai didi

java - 如何使用 Xstream 省略标签?

转载 作者:行者123 更新时间:2023-11-30 09:03:49 24 4
gpt4 key购买 nike

我有这样一个类:

public class revision{
long number;
String comment;

... getters and setters
}

我希望 xstream 结果是这样的:

<revision comment="value of comment">
121556
</revision>

但是,由于数字是字段,它迫使我将其写在 <number> 中标签。

我用它来构建 xml:

XStream xstream = new XStream(new DomDriver("UTF-8"));
xstream.useAttributeFor(Revision.class, "comment");

有没有可能不显示标签?

最佳答案

您需要注册一个 ToAttributedValueConverter 对于 revision类(class)。此转换器允许您指定应映射到元素字符内容的类的单个属性,而所有其他属性都映射到元素上的特性。最简单的方法是使用注释:

@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"));

关于java - 如何使用 Xstream 省略标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25524850/

24 4 0