【发布时间】:2018-11-25 06:42:02
【问题描述】:
我想使用 XStream 反序列化以下 XML:
<root>
<node att="value">text</node>
</root>
放入具有两个String 类型字段的Java 对象。我该怎么做?
【问题讨论】:
我想使用 XStream 反序列化以下 XML:
<root>
<node att="value">text</node>
</root>
放入具有两个String 类型字段的Java 对象。我该怎么做?
【问题讨论】:
正如您发现的几个序列化示例中所暗示的,ToAttributedValueConverter 是最直接的方法。它允许您将类上的字段作为 XML 属性处理,其中一个作为 XML 主体。
用这两个类来接收数据:
@XStreamAlias("root")
public class Root {
private Node node;
}
@XStreamConverter(value = ToAttributedValueConverter.class, strings = {
"text" })
public class Node {
private String att;
private String text;
}
这会正确反序列化:
XStream xstream = new XStream();
xstream.processAnnotations(Root.class);
Root root = (Root) xstream.fromXML(xml);
【讨论】: