如何使用XStream对属性和文本节点进行反序列化?

时间:2018-06-15 12:04:44

标签: java xml xstream

我想使用 XStream 反序列化以下XML:

<root>
    <node att="value">text</node>
</root>

到具有两个String类型字段的 Java 对象中。我该怎么做?

我见过these questions,但我需要做的是反向操作。

1 个答案:

答案 0 :(得分:1)

正如您在几个序列化示例中所暗示的那样,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);