代码之家  ›  专栏  ›  技术社区  ›  Bass

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

  •  0
  • Bass  · 技术社区  · 7 年前

    我想使用 X流 :

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

    变成一个 爪哇 具有两个类型字段的对象 String . 我该怎么做?

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   df778899    7 年前

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