加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 06:24:25 所属栏目:百科 来源:网络整理
导读:http://www.jb51.cc/article/p-ditrelwy-gh.html 继如上链接博客之后,具体问题的解决方案 效果xml样例 ?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

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

  • 效果xml样例
<?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
    ... ...
}
  • java关键代码
......
    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);
    ......

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读