微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于Xstream工具解决对象到xml文本的集合节点重复问题

http://www.jb51.cc/article/p-ditrelwy-gh.html
继如上链接博客之后,具体问题的解决方

<?xml version="1.0" encoding="utf-8"?>
<root>
    <BASE_DATA>
        <USER_CODE>0001</USER_CODE>
        <USER_NAME>0001</USER_NAME>
        <ORG_CODE>010</ORG_CODE>
        <COM_CODE>010</COM_CODE>
        <ORG_NAME>010</ORG_NAME>
        <ROLE_CODE>1</ROLE_CODE>
    </BASE_DATA>  
    <Meta_DATA>
        <IMAGE_TYPES>
            <IMAGE_TYPE>021</IMAGE_TYPE>
            <IMAGE_TYPE>022</IMAGE_TYPE>
        </IMAGE_TYPES>
        <BATCH>
            <APP_CODE>A21</APP_CODE>
            <BUSI_NUM>0000**************025</BUSI_NUM>
        </BATCH>
    </Meta_DATA>
</root>
  • step1:java对象编写
public class BaseData {
    @XStreamAlias("USER_CODE")
    private String userCode;
    @XStreamAlias("USER_NAME")
    private String userName;
    @XStreamAlias("ORG_CODE")
    private String orgCode;
    @XStreamAlias("COM_CODE")
    private String comCode;
    @XStreamAlias("ORG_NAME")
    private String orgName;
    @XStreamAlias("ROLE_CODE")
    private String roleCode;

    //getter及setter
    ... ...
}

应注意的此对象的差异(对属性imageTypes的处理方式)

public class MetaData {
    @XStreamAlias("BATCH")
    private Batch batchNode;
    @XStreamAlias("IMAGE_TYPES")
    private List<String> imageTypes = new ArrayList<String>();
    @XStreamAlias("COUNT_PER_PAGE")
    private String countPerPage;
    //此处注意,针对重复命名之后转换为xml节点嵌套的解决方
    //将节点(IMAGE_TYPES)作为集合对象处理
    public void add(String imageType){
        this.imageTypes.add(imageType);
    }

    //除属性:imageTypes之外,setter及getter
    ... ...
}
public class Batch{
    @XStreamAlias("APP_CODE")
    private String appCode;
    @XStreamAlias("BUSI_NUM")

    //getter及setter
    ... ...
}
@XStreamAlias("root")
public class Query {
    @XStreamAlias("BASE_DATA")
    private BaseData baseData;
    @XStreamAlias("Meta_DATA")
    private MetaData MetaData;

    //getter及setter
    ... ...
}
......
    XStream xStream=new XStream(new DomDriver("UTF-8",new XmlFriendlyReplacer("-_","_")));
    xStream.addImmutableType(ImageTypeBean.class);
    xStream.alias("IMAGE_TYPE",String.class);
    xStream.autodetectAnnotations(true);
    String str= xStream.toXML(query);
    ......

原文地址:https://www.jb51.cc/xml/297005.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。