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();
      }
复制代码
        
相关推荐
醉殇姒若梦遗年21 分钟前
怎么用idea打jar包
java·intellij-idea·jar
林九生25 分钟前
【Docker】Docker环境下快速部署Ollama与Open-WebUI:详细指南
java·docker·eureka
Aric_Jones1 小时前
lua入门语法,包含安装,注释,变量,循环等
java·开发语言·git·elasticsearch·junit·lua
Akiiiira1 小时前
【日撸 Java 三百行】Day 12(顺序表(二))
java·开发语言
qq_386322692 小时前
华为网路设备学习-21 IGP路由专题-路由过滤(filter-policy)
前端·网络·学习
Chase_Mos5 小时前
Spring 必会之微服务篇(1)
java·spring·微服务
小林学习编程8 小时前
SpringBoot校园失物招领信息平台
java·spring boot·后端
撸码到无法自拔8 小时前
docker常见命令
java·spring cloud·docker·容器·eureka
蓝婷儿8 小时前
前端面试每日三题 - Day 32
前端·面试·职场和发展
heart000_18 小时前
IDEA 插件推荐:提升编程效率
java·ide·intellij-idea