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

本文介绍了一种使用Java实现XML序列化的方案,包括定义Java对象、处理重复元素以生成符合需求的XML文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/cqstart116/article/details/44495979
继如上链接博客之后,具体问题的解决方案

  • 效果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);
    ......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值