【问题标题】:XStream implicit configourationXStream 隐式配置
【发布时间】:2018-09-16 11:51:48
【问题描述】:

我正在使用 XML,例如:

<localMSZ>
    <territories>
        <codeOKTMO>str1</codeOKTMO>
        <codeOKTMO>str2</codeOKTMO>
    </territories>
</localMSZ>

在 Java 代码中,我有 LocalMSZ 类,其中有 ListString 之类的:

class LocalMSZ {
    List<String> territories;
}

我不明白在这种情况下我应该如何发布注释?

【问题讨论】:

    标签: java xml xstream


    【解决方案1】:

    问题出在您的映射类中:它缺少为此所需的结构和注释。它应该适用于:

    import java.util.LinkedList;
    import java.util.List;
    
    import com.thoughtworks.xstream.annotations.XStreamAlias;
    import com.thoughtworks.xstream.annotations.XStreamConverter;
    import com.thoughtworks.xstream.annotations.XStreamImplicit;
    import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter;
    
    @XStreamAlias("localMSZ")
    public class LocalMSZ {
    
        private Territories territories = new Territories();
    
        public Territories getTerritories() {
            return territories;
        }
    
        public void setTerritories(Territories territories) {
            this.territories = territories;
        }
    
        @XStreamAlias("codeOKTMO")
        @XStreamConverter(value = ToAttributedValueConverter.class, strings = { "value" })
        public static class Code {
            private String value;
    
            public String getValue() {
                return value;
            }
    
            public void setValue(String value) {
                this.value = value;
            }
    
    
        }
    
        @XStreamAlias("territories")
        public static class Territories {
            // This one maps the sequence of <codeOKTMO> tags
            @XStreamImplicit
            private List<Code> codes = new LinkedList<Code>();
    
            public List<Code> getCodes() {
                return codes;
            }
    
            public void setCodes(List<Code> codes) {
                this.codes = codes;
            }
    
    
        }
    }
    

    请记住,当您编写 main 方法来处理 LocalMSZ 的注释时

    XStream xstream = new XStream();
    xstream.processAnnotations(LocalMSZ.class);
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 2013-04-22
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多