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();
      }
复制代码
        
相关推荐
k09332 分钟前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
激流丶9 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
Themberfue12 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
EricWang135824 分钟前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
September_ning24 分钟前
React.lazy() 懒加载
前端·react.js·前端框架
让学习成为一种生活方式29 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
web行路人34 分钟前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
晨曦_子画35 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
超雄代码狂1 小时前
ajax关于axios库的运用小案例
前端·javascript·ajax
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法