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();
      }
复制代码
        
相关推荐
SHUIPING_YANG6 分钟前
根据用户id自动切换表查询
java·服务器·数据库
爱吃烤鸡翅的酸菜鱼18 分钟前
IDEA高效开发:Database Navigator插件安装与核心使用指南
java·开发语言·数据库·编辑器·intellij-idea·database
惊涛骇浪、24 分钟前
SpringMVC + Tomcat10
java·tomcat·springmvc
然我27 分钟前
不用 Redux 也能全局状态管理?看我用 useReducer+Context 搞个 Todo 应用
前端·javascript·react.js
前端小巷子32 分钟前
Web 实时通信:从短轮询到 WebSocket
前端·javascript·面试
神仙别闹35 分钟前
基于C#+SQL Server实现(Web)学生选课管理系统
前端·数据库·c#
墨染点香37 分钟前
LeetCode Hot100【6. Z 字形变换】
java·算法·leetcode
web前端神器42 分钟前
指定阿里镜像原理
前端
枷锁—sha1 小时前
【DVWA系列】——CSRF——Medium详细教程
android·服务器·前端·web安全·网络安全·csrf
枷锁—sha1 小时前
跨站请求伪造漏洞(CSRF)详解
运维·服务器·前端·web安全·网络安全·csrf