springboot接口对XML处理

添加依赖:

 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml -->
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.9.9</version>
        </dependency>

接收bean

package com.test.modal;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Data;

@JacksonXmlRootElement(localName = "o")
@Data
public class XmlBean {

    private TX_BODY TX_BODY;
    private TX_HEADER TX_HEADER;
    @JacksonXmlProperty(localName = "TX_BODY")
    public com.test.modal.TX_BODY getTX_BODY() {
        return TX_BODY;
    }
    @JacksonXmlProperty(localName = "TX_HEADER")
    public com.test.modal.TX_HEADER getTX_HEADER() {
        return TX_HEADER;
    }
}

package com.test.modal;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.Data;

@Data
public class TX_BODY {

    @JacksonXmlProperty(localName = "e")
    private E e;

}

package com.test.modal;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.Data;

@Data
public class TX_HEADER {

    @JacksonXmlProperty(localName = "SYS_EVT_TRACE_ID", isAttribute = true)
    private String SYS_EVT_TRACE_ID;
    @JacksonXmlProperty(localName = "SYS_PKG_STS_TYPE", isAttribute = true)
    private String SYS_PKG_STS_TYPE;
    @JacksonXmlProperty(localName = "SYS_PKG_VRSN", isAttribute = true)
    private String SYS_PKG_VRSN;
    @JacksonXmlProperty(localName = "SYS_REQ_TIME", isAttribute = true)
    private String SYS_REQ_TIME;
    @JacksonXmlProperty(localName = "SYS_TX_CODE", isAttribute = true)
    private String SYS_TX_CODE;

}
package com.test.modal;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.Data;

@Data
public class E {

    private String MANUF_ID;

    private String PICTURE;

    @JacksonXmlProperty(localName = "MANUF_ID", isAttribute = true)
    public String getMANUF_ID() {
        return MANUF_ID;
    }

    @JacksonXmlProperty(localName = "PICTURE", isAttribute = true)
    public String getPICTURE() {
        return PICTURE;
    }
}

接口定义:

 @PostMapping(value = "xmlres", consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
    public Object resXmlTest(@RequestBody XmlBean bean) {
        XmlMapper xmlMapper = new XmlMapper();
        xmlMapper.setDefaultUseWrapper(false);
        xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);

        XmlRes xmlRes = new XmlRes();
        TXRespBody txRespBody = new TXRespBody();
        RespElement respElement = new RespElement();

        RespElement.Blinks blinks = new RespElement.Blinks();
        RespElement.Msg msg = new RespElement.Msg();
        msg.setMsg("success");
        respElement.setMsg(msg);

        RespElement.Result result = new RespElement.Result();
        result.setResult("1");
        respElement.setResult(result);

        RespElement.PupilDis pupilDis =new RespElement.PupilDis();
        RespElement.Pup pup = new RespElement.Pup();
        RespElement.Pup pup2 = new RespElement.Pup();
        RespElement.Pup pup3 = new RespElement.Pup();
        pup.setE("1");
        pup2.setE("2");
        pup3.setE("3");
        pupilDis.setE(new RespElement.Pup[]{pup,pup2,pup3});
        respElement.setPupilDis(pupilDis);


        RespElement.FaceCounts faceCounts = new RespElement.FaceCounts();
        RespElement.Fcouts fcouts = new RespElement.Fcouts();
        fcouts.setE("0");
        RespElement.Fcouts fcouts2 = new RespElement.Fcouts();
        fcouts2.setE("1");
        RespElement.Fcouts fcouts3 = new RespElement.Fcouts();
        fcouts3.setE("2");

        faceCounts.setE(new RespElement.Fcouts[]{fcouts, fcouts2, fcouts3});
        respElement.setFaceCounts(faceCounts);

        RespElement.FaceAngels faceAngels = new RespElement.FaceAngels();
        RespElement.Angeles angeles = new RespElement.Angeles();
        angeles.setE(0.83749379f);
        RespElement.Angeles angeles1 = new RespElement.Angeles();
        angeles1.setE(0.83749379f);
        RespElement.Angeles angeles2 = new RespElement.Angeles();
        angeles2.setE(0.83749379f);
        faceAngels.setE(new RespElement.Angeles[]{angeles,angeles1,angeles2});
        respElement.setFaceAngels(faceAngels);

        RespElement.KeyPointsOcculude keyPointsOcculude = new RespElement.KeyPointsOcculude();
        RespElement.Opints opints = new RespElement.Opints();
        opints.setE("1");
        RespElement.Opints opints2 = new RespElement.Opints();
        opints2.setE("2");
        RespElement.Opints opints3 = new RespElement.Opints();
        opints3.setE("3");
        keyPointsOcculude.setE(new RespElement.Opints[]{opints,opints2,opints3});
        respElement.setKeyPointsOcculude(keyPointsOcculude);
        
        RespElement.Clarity clarity = new RespElement.Clarity();
        List<String> clarityList = Arrays.asList("1","2");

        List<RespElement.Cla> claList = new ArrayList<>();
        for (int i = 0; i < clarityList.size(); i++) {
            RespElement.Cla cla = new RespElement.Cla();
            String str = clarityList.get(i);
            cla.setE(str);
            claList.add(cla);
        }
        RespElement.Cla[] eArr =  claList.toArray(new RespElement.Cla[claList.size()]);
        clarity.setE(eArr);
        respElement.setClarity(clarity);

        RespElement.LightnessScore lightnessScore = new RespElement.LightnessScore();
        RespElement.Lightn lightn1 = new RespElement.Lightn();
        lightn1.setE("1");
        RespElement.Lightn lightn2 = new RespElement.Lightn();
        lightn2.setE("2");
        RespElement.Lightn lightn3 = new RespElement.Lightn();
        lightn3.setE("3");
        lightnessScore.setE(new RespElement.Lightn[]{lightn1,lightn2,lightn3});
        respElement.setLightnessScore(lightnessScore);

        RespElement.TotalPoint totalPoint=new RespElement.TotalPoint();
        totalPoint.setTotalPoint("0.65");
        respElement.setTotalPoint(totalPoint);

        blinks.setBlinks("1");
        respElement.setBlinks(blinks);
        txRespBody.setE(respElement);
        TXRespHeader txRespHeader = new TXRespHeader();


        TXRespHeader.SysEvtTraceID sysEvtTraceID = new TXRespHeader.SysEvtTraceID();
        sysEvtTraceID.setTrcId(bean.getTX_HEADER().getSYS_EVT_TRACE_ID());
        txRespHeader.setSYS_EVT_TRACE_ID(sysEvtTraceID);

        TXRespHeader.SysPkgStsType sysPkgStsType = new TXRespHeader.SysPkgStsType();
        sysPkgStsType.setStsType("1");
        txRespHeader.setSYS_PKG_STS_TYPE(sysPkgStsType);

        TXRespHeader.SysRecvTime sysRecvTime = new TXRespHeader.SysRecvTime();
        sysRecvTime.setRecvType("121212");
        txRespHeader.setSYS_RECV_TIME(sysRecvTime);

        TXRespHeader.SysRespCode sysRespCode = new TXRespHeader.SysRespCode();
        sysRespCode.setRespCode("212");
        txRespHeader.setSYS_RESP_CODE(sysRespCode);

        TXRespHeader.SysRespDesc sysRespDesc = new TXRespHeader.SysRespDesc();
        sysRespDesc.setRespDesc("11");
        txRespHeader.setSYS_RESP_DESC(sysRespDesc);

        TXRespHeader.SysRespTime sysRespTime = new TXRespHeader.SysRespTime();
        sysRespTime.setRespTime("904895045-094");
        txRespHeader.setSYS_RESP_TIME(sysRespTime);

        TXRespHeader.SysTxStatus sysTxStatus =new TXRespHeader.SysTxStatus();
        sysTxStatus.setTxStatus("121");
        txRespHeader.setSYS_TX_STATUS(sysTxStatus);

        xmlRes.setTxRespHeader(txRespHeader);
        xmlRes.setTxRespBody(txRespBody);
        try{
            return xmlMapper.writeValueAsString(xmlRes);
        }catch (Exception e){
            return xmlRes;
        }
    }

响应bean:

package com.test.controller;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import com.test.modal.TXRespBody;
import com.test.modal.TXRespHeader;
import lombok.Data;

@Data
@JacksonXmlRootElement(localName = "o")
public class XmlRes {

    @JacksonXmlProperty(localName = "TX_BODY")
    private TXRespBody txRespBody;

    @JacksonXmlProperty(localName = "TX_HEADER")
    private TXRespHeader txRespHeader;

}

package com.test.modal;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.Data;

@Data
public class TXRespBody {

    @JacksonXmlProperty(localName = "e")
    private RespElement e;

    @JacksonXmlProperty(localName = "class",isAttribute = true)
    private String arr="array";

}

package com.test.modal;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
public class TXRespHeader {

    @JacksonXmlProperty(localName = "class", isAttribute = true)
    private String obj = "object";

    private SysEvtTraceID SYS_EVT_TRACE_ID;
    private SysPkgStsType SYS_PKG_STS_TYPE;
    private SysRecvTime SYS_RECV_TIME;
    private SysRespCode SYS_RESP_CODE;
    private SysRespDesc SYS_RESP_DESC;
    private SysRespTime SYS_RESP_TIME;
    private SysTxStatus SYS_TX_STATUS;


    @NoArgsConstructor
    @Data
    public static class SysEvtTraceID {
        @JacksonXmlText
        private String trcId;
        @JacksonXmlProperty(localName = "type", isAttribute = true)
        private String str = "string";
    }

    @NoArgsConstructor
    @Data
    public static class SysPkgStsType {
        @JacksonXmlText
        private String stsType;
        @JacksonXmlProperty(localName = "type", isAttribute = true)
        private String str = "string";
    }

    @NoArgsConstructor
    @Data
    public static class SysRecvTime {
        @JacksonXmlText
        private String recvType;
        @JacksonXmlProperty(localName = "type", isAttribute = true)
        private String str = "string";
    }

    @NoArgsConstructor
    @Data
    public static class SysRespCode {
        @JacksonXmlText
        private String respCode;
        @JacksonXmlProperty(localName = "type", isAttribute = true)
        private String str = "string";
    }

    @NoArgsConstructor
    @Data
    public static class SysRespDesc {
        @JacksonXmlText
        private String respDesc;
        @JacksonXmlProperty(localName = "type", isAttribute = true)
        private String str = "string";
    }

    @NoArgsConstructor
    @Data
    public static class SysRespTime {
        @JacksonXmlText
        private String respTime;
        @JacksonXmlProperty(localName = "type", isAttribute = true)
        private String str = "string";
    }

    @NoArgsConstructor
    @Data
    public static class SysTxStatus {
        @JacksonXmlText
        private String txStatus;
        @JacksonXmlProperty(localName = "type", isAttribute = true)
        private String str = "string";
    }

    @JacksonXmlProperty(localName = "SYS_EVT_TRACE_ID")
    public SysEvtTraceID getSYS_EVT_TRACE_ID() {
        return SYS_EVT_TRACE_ID;
    }

    @JacksonXmlProperty(localName = "SYS_PKG_STS_TYPE")
    public SysPkgStsType getSYS_PKG_STS_TYPE() {
        return SYS_PKG_STS_TYPE;
    }

    @JacksonXmlProperty(localName = "SYS_RECV_TIME")
    public SysRecvTime getSYS_RECV_TIME() {
        return SYS_RECV_TIME;
    }

    @JacksonXmlProperty(localName = "SYS_RESP_CODE")
    public SysRespCode getSYS_RESP_CODE() {
        return SYS_RESP_CODE;
    }

    @JacksonXmlProperty(localName = "SYS_RESP_DESC")
    public SysRespDesc getSYS_RESP_DESC() {
        return SYS_RESP_DESC;
    }

    @JacksonXmlProperty(localName = "SYS_RESP_TIME")
    public SysRespTime getSYS_RESP_TIME() {
        return SYS_RESP_TIME;
    }

    @JacksonXmlProperty(localName = "SYS_TX_STATUS")
    public SysTxStatus getSYS_TX_STATUS() {
        return SYS_TX_STATUS;
    }
}

package com.test.modal;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.print.attribute.standard.OrientationRequested;
import java.util.List;

@Data
public class RespElement {

    @JacksonXmlProperty(localName = "class",isAttribute = true)
    private String obj = "object";

    private Clarity clarity;
    private Blinks blinks;
    private FaceAngels faceAngels;
    private FaceCounts faceCounts;
    private KeyPointsOcculude keyPointsOcculude;
    private LightnessScore lightnessScore;
    private Msg msg;
    private Result result;
    private PupilDis pupilDis;
    private TotalPoint totalPoint;

    //睁闭眼检测结果父节点
    @NoArgsConstructor
    @Data
    public static class Blinks{

        //睁闭眼检测结果
        @JacksonXmlText
        private String blinks;
        @JacksonXmlProperty(localName = "type",isAttribute = true)
        private String str="string";
    }

    //人脸清晰度检测结果父节点
    @NoArgsConstructor
    @Data
    public static class Clarity {

        @JacksonXmlElementWrapper(useWrapping = false)
        private Cla[] e;

        @JacksonXmlProperty(localName = "class",isAttribute = true)
        private String arr="array";
    }

    //人脸清晰度检测结果子节点
    @NoArgsConstructor
    @Data
    public static class Cla{

        //人脸清晰度检测结果
        @JacksonXmlText
        private String e;

        @JacksonXmlProperty(localName = "type",isAttribute = true)
        private String str="string";

    }

    //睁闭眼检测结果父节点
    @NoArgsConstructor
    @Data
    public static class FaceAngels {

        @JacksonXmlElementWrapper(useWrapping = false)
        private Angeles[] e;

        @JacksonXmlProperty(localName = "class",isAttribute = true)
        private String arr="array";

    }

    //睁闭眼检测结果子节点
    @NoArgsConstructor
    @Data
    public static class Angeles{


        @JacksonXmlText
        private float e;

        @JacksonXmlProperty(localName = "type",isAttribute = true)
        private String str="string";

    }

    //人脸数量结果父节点
    @NoArgsConstructor
    @Data
    public static class FaceCounts{

        @JacksonXmlElementWrapper(useWrapping = false)
        private Fcouts[] e;

        @JacksonXmlProperty(localName = "class",isAttribute = true)
        private String arr="array";
    }

    //人脸数量结果子节点
    @NoArgsConstructor
    @Data
    public static class Fcouts{

        //人脸数量结果子节点
        @JacksonXmlText
        private String e;

        @JacksonXmlProperty(localName = "type",isAttribute = true)
        private String str="string";

    }

    //人脸关键点遮挡检测结果父节点
    @NoArgsConstructor
    @Data
    public static class KeyPointsOcculude{

        @JacksonXmlElementWrapper(useWrapping = false)
        private Opints[] e;

        @JacksonXmlProperty(localName = "class",isAttribute = true)
        private String arr="array";
    }

    //人脸关键点遮挡检测结果子节点
    @NoArgsConstructor
    @Data
    public static class Opints{

        @JacksonXmlText
        private String e;

        @JacksonXmlProperty(localName = "type",isAttribute = true)
        private String str="string";

    }

    //人脸亮度检测结果父节点
    @NoArgsConstructor
    @Data
    public static class LightnessScore{

        @JacksonXmlElementWrapper(useWrapping = false)
        private Lightn[] e;

        @JacksonXmlProperty(localName = "class",isAttribute = true)
        private String arr="array";
    }

    //人脸亮度检测结果子节点
    @NoArgsConstructor
    @Data
    public static class Lightn{

        @JacksonXmlText
        private String e;

        @JacksonXmlProperty(localName = "type",isAttribute = true)
        private String str="string";

    }

    //响应信息
    @NoArgsConstructor
    @Data
    public static class Msg{

        @JacksonXmlText
        private String msg;

        @JacksonXmlProperty(localName = "type",isAttribute = true)
        private String str="string";
    }

    //综合评分
    @NoArgsConstructor
    @Data
    public static class TotalPoint{
        @JacksonXmlText
        private String totalPoint;

        @JacksonXmlProperty(localName = "type",isAttribute = true)
        private String str="string";
    }

    //响应结果
    @NoArgsConstructor
    @Data
    public static class Result{

        @JacksonXmlText
        private String result;

        @JacksonXmlProperty(localName = "type",isAttribute = true)
        private String str="string";
    }

    //瞳间距检测结果父节点
    @NoArgsConstructor
    @Data
    public static class PupilDis{

        @JacksonXmlElementWrapper(useWrapping = false)
        private Pup[] e;

        @JacksonXmlProperty(localName = "class",isAttribute = true)
        private String arr="array";
    }

    //瞳间距检测结果子节点
    @NoArgsConstructor
    @Data
    public static class Pup{

        @JacksonXmlText
        private String e;

        @JacksonXmlProperty(localName = "type",isAttribute = true)
        private String str="string";

    }

}

 

响应数据结构:

<?xml version='1.0' encoding='UTF-8'?>
<o>
    <TX_BODY class="array">
        <e class="object">
            <clarity class="array">
                <e type="string">1</e>
                <e type="string">2</e>
            </clarity>
            <blinks type="string">1</blinks>
            <faceAngels class="array">
                <e type="string">0.8374938</e>
                <e type="string">0.8374938</e>
                <e type="string">0.8374938</e>
            </faceAngels>
            <faceCounts class="array">
                <e type="string">0</e>
                <e type="string">1</e>
                <e type="string">2</e>
            </faceCounts>
            <keyPointsOcculude class="array">
                <e type="string">1</e>
                <e type="string">2</e>
                <e type="string">3</e>
            </keyPointsOcculude>
            <lightnessScore class="array">
                <e type="string">1</e>
                <e type="string">2</e>
                <e type="string">3</e>
            </lightnessScore>
            <msg type="string">success</msg>
            <result type="string">1</result>
            <pupilDis class="array">
                <e type="string">1</e>
                <e type="string">2</e>
                <e type="string">3</e>
            </pupilDis>
            <totalPoint type="string">0.65</totalPoint>
        </e>
    </TX_BODY>
    <TX_HEADER class="object">
        <SYS_RECV_TIME type="string">121212</SYS_RECV_TIME>
        <SYS_TX_STATUS type="string">121</SYS_TX_STATUS>
        <SYS_RESP_CODE type="string">212</SYS_RESP_CODE>
        <SYS_RESP_TIME type="string">904895045-094</SYS_RESP_TIME>
        <SYS_RESP_DESC type="string">11</SYS_RESP_DESC>
        <SYS_EVT_TRACE_ID type="string">20170311000001</SYS_EVT_TRACE_ID>
        <SYS_PKG_STS_TYPE type="string">1</SYS_PKG_STS_TYPE>
    </TX_HEADER>
</o>

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值