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();
      }
复制代码
        
相关推荐
心柠12 分钟前
vue3相关知识总结
前端·javascript·vue.js
索荣荣18 分钟前
Java Session 全面指南:原理、应用与实践(含 Spring Boot 实战)
java·spring boot·后端
Amumu1213823 分钟前
Vue Router(二)
java·前端
念越1 小时前
数据结构:栈堆
java·开发语言·数据结构
a1117761 小时前
图书借阅管理系统(FastAPI + Vue)
前端·vue.js·fastapi
千寻技术帮1 小时前
10333_基于SpringBoot的家电进存销系统
java·spring boot·后端·源码·项目·家电进存销
dear_bi_MyOnly1 小时前
【多线程——线程状态与安全】
java·开发语言·数据结构·后端·中间件·java-ee·intellij-idea
常年游走在bug的边缘1 小时前
掌握JavaScript作用域:从函数作用域到块级作用域的演进与实践
开发语言·前端·javascript
jiaguangqingpanda2 小时前
Day36-20260204
java·开发语言
极致♀雨2 小时前
vue2+elementUI table表格勾选行冻结/置顶
前端·javascript·vue.js·elementui