springboot的xml和java对象转换

package com.zygh.tscmp.pojo;
import com.fasterxml.jackson.annotation.JsonFormat; 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; import lombok.experimental.Accessors; import java.util.List; /** * 定义信号控制传输对象 * @JacksonXmlRootElement: 用在类上,用来自定义根节点名称; * @JacksonXmlProperty: 用在属性上,用来自定义子节点名称; * @JacksonXmlElementWrapper: 用在属性上,可以用来嵌套包装一层父节点,或者禁用此属性参与 XML 转换。 */ @Data @JacksonXmlRootElement(localName = "Message") @Accessors(chain = true) public class SystemSignalControlMessage extends MessageCommonField { @JacksonXmlElementWrapper(localName = "Body") @JacksonXmlProperty(localName = "Body") private Body body; @Data public static class Body { @JacksonXmlElementWrapper(localName = "Operation") @JacksonXmlProperty(localName = "Operation") private Operation operation; } @Data public static class Operation { //路口控制方式参数对象 @JacksonXmlElementWrapper(localName = "TSCCmd") @JacksonXmlProperty(localName = "TSCCmd") private TSccMd tSCCmd; @JacksonXmlProperty(localName = "order",isAttribute = true) private String order; @JacksonXmlProperty(localName = "name",isAttribute = true) private String name; } /** * 路口控制方式参数对象 */ @Data public static class TSccMd { /** * 指定控制方式 */ @JacksonXmlElementWrapper(localName = "CrossControlMode") @JacksonXmlProperty(localName = "CrossControlMode") private CrossControlMode crossControlMode; /** * 多个锁定交通流向 */ @JacksonXmlElementWrapper(localName = "LockFlowDirection") @JacksonXmlProperty(localName = "LockFlowDirection") private List<LockFlowDirection> lockFlowDirection; /** * 指定控制方案 */ @JacksonXmlElementWrapper(localName = "CrossPlan") @JacksonXmlProperty(localName = "CrossPlan") private CrossPlan crossPlan; /** * 指定阶段-扩展参数 */ @JacksonXmlElementWrapper(localName = "CrossStage") @JacksonXmlProperty(localName = "CrossStage") private CrossStage crossStage; /** * 中心临时方案控制-扩展参数 */ @JacksonXmlElementWrapper(localName = "TemporaryControlPlan") @JacksonXmlProperty(localName = "TemporaryControlPlan") private TemporaryControlPlan temporaryControlPlan; } /** * 中心临时方案控制-扩展对象 */ @Data public static class TemporaryControlPlan { @JacksonXmlProperty(localName = "CrossID") private String crossID; @JacksonXmlProperty(localName = "CycleLen") private String cycleLen; @JacksonXmlProperty(localName = "CoordStageNo") private String coordStageNo; @JacksonXmlProperty(localName = "OffSet") private String offSet; @JacksonXmlProperty(localName = "StagePlanNo") private String stagePlanNo; @JacksonXmlProperty(localName = "PlanNo") private String planNo; @JacksonXmlElementWrapper(useWrapping = false) @JacksonXmlProperty(localName = "StageNoList") private List<StageNoList> stageNoLists; } /** * 指定阶段-扩展对象 */ @Data public static class StageNoList { @JacksonXmlProperty(localName = "SeqNo") private String seqNo; @JacksonXmlProperty(localName = "StageNo") private String stageNo; @JacksonXmlProperty(localName = "StageTime") private String stageTime; } /** * 指定阶段-扩展对象 */ @Data public static class CrossStage { @JacksonXmlProperty(localName = "CrossID") private String crossID; @JacksonXmlProperty(localName = "StageNo") private String stageNo; } /** * 指定控制方案对象 */ @Data public static class CrossPlan { @JacksonXmlProperty(localName = "CrossID") private String crossID; @JacksonXmlProperty(localName = "PlanNo") private String planNo; } /** * 路口控制方式对象 */ @Data public static class CrossControlMode { @JacksonXmlProperty(localName = "CrossID") private String crossID; @JacksonXmlProperty(localName = "Value") private String value; } /** * 锁定交通流向对象 */ @Data public static class LockFlowDirection { @JacksonXmlProperty(localName = "CrossID") private String crossID; @JacksonXmlProperty(localName = "Type") private String type; @JacksonXmlProperty(localName = "Entrance") private String entrance; @JacksonXmlProperty(localName = "Exit") private String exit; @JacksonXmlProperty(localName = "StartTime") private String startTime; @JacksonXmlProperty(localName = "Duration") private String duration; } }

 

 

        <!--        jackson-dataformat-xml是xml和bean转换依赖的包-->
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>

 

参考:https://blog.51cto.com/wuyongyin/5684578

          https://www.cnblogs.com/scai-fxh/p/10598535.html

posted @ 2023-05-20 17:27  刘百会  阅读(790)  评论(0编辑  收藏  举报