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

How do I de-serialize an attribute and a text node using XStream?

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

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

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

我看过these questions,但我要做的其实是反向操作

正如您在几个序列化示例中所暗示的那样,ToAttributedValueConverter 是执行此操作的最直接方法。它允许您将 class 上的字段作为 XML 属性处理,其中一个被选为 XML 正文。

用这两个classes来接收数据:

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