Java中金蝶凭证xml转wswsvoucher对象

1.引入maven 依赖包

复制代码
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.41</version>
</dependency>
复制代码
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>        
    <version>1.18.32</version>
</dependency>

2.改造vo:

2.1 凭证xml格式如下:

<RESPONSE>

<COMPANYCODE>1100</COMPANYCODE>

<VOUCHER>

<COMPANYNUMBER>1100</COMPANYNUMBER>

<BOOKEDDATE>2024-08-21</BOOKEDDATE>

......其他属性省略

</VOUCHER>

<VOUCHER>

<COMPANYNUMBER>1100</COMPANYNUMBER>

<BOOKEDDATE>2024-08-21</BOOKEDDATE>

......其他属性省略

</VOUCHER>

<RESPONSE>

2.2 对应xml转Java对象格式:

2.2.1: 根( <RESPONSE>)对象:

复制代码
        import lombok.Data;
        import javax.xml.bind.annotation.*;
        import java.util.List;
        @Data
        @XmlRootElement(name="RESPONSE")
        @XmlAccessorType(XmlAccessType.FIELD)
        public class WSWSVoucherList {
            @XmlElement(name="COMPANYCODE")
            private String COMPANYCODE;
            @XmlElement(name="VOUCHER")
            private List<WSWSVoucher> VOUCHERS;
        }

2.2.2 :</VOUCHER>对象对应实体类:

复制代码
                import lombok.Data;
                import javax.xml.bind.annotation.XmlAccessType;
                import javax.xml.bind.annotation.XmlAccessorType;
                import javax.xml.bind.annotation.XmlElement;

                @Data
                @XmlAccessorType(XmlAccessType.FIELD)
                public class WSWSVoucher extends WSBean implements java.io.Serializable                 {
                    @XmlElement(name ="CASHASSTACTTYPE5")
                    private  java.lang.String  cashAsstActType5  ;
                    @XmlElement(name ="OPPACCOUNTSEQ")
                    private int oppAccountSeq ;
                    @XmlElement(name ="CASHASSTACTTYPE4")
                    private java.lang.String cashAsstActType4 ;

........其他对应属性与xml里对应字段一致,此处省略。按需增加

}

3.将xml转换成对应的实体类:

复制代码
        try {
         File file = new File("E:\\凭证.xml");//红色为对应xml的位置和名称

         JAXBContext jaxbContext = JAXBContext.newInstance(WSWSVoucherList.class);
         Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
         StringReader reader = new StringReader(str);
//       Object o=jaxbUnmarshaller.unmarshal(file);
         WSWSVoucherList data1 = (WSWSVoucherList) jaxbUnmarshaller.unmarshal(file);
         System.out.println(data1);
         System.out.println(JSON.toJSONString(data1));
         // Now you can access the data in the 'data' object.
      } catch (Exception e) {
         e.printStackTrace();
      }
复制代码
        
相关推荐
_杨瀚博4 分钟前
微信支付集成_JSAPI
前端
polaris_tl4 分钟前
react beginwork
前端
悟能不能悟12 分钟前
java 设置日期返回格式的几种方式
java·开发语言
爱笑的眼睛1115 分钟前
深入解析PyTorch nn模块:超越基础模型构建的高级技巧与实践
java·人工智能·python·ai
亮子AI15 分钟前
【css】列表的标号怎么实现居中对齐?
前端·css
Smile_25422041817 分钟前
解决本地 Windows 开发机无法注册到 PowerJob 服务器的问题
java·tcp/ip
float_六七18 分钟前
Spring AOP连接点实战解析
java·后端·spring
while(1){yan}35 分钟前
基于IO流的三个小程序
java·开发语言·青少年编程
梦想的旅途239 分钟前
媒体文件(图片/文件)的上传与管理:获取 Media ID 的技术细节
前端·http·servlet
CoderYanger1 小时前
贪心算法:7.最长连续递增序列
java·算法·leetcode·贪心算法·1024程序员节