栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

解析xml报文为Java实体类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解析xml报文为Java实体类

JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式。

Jaxb处理java对象和xml之间转换经常使用的annotation有:
@XmlType
@XmlElement
@XmlRootElement
@XmlAttribute
@XmlAccessorType
@XmlAccessorOrder
@XmlTransient
@XmlJavaTypeAdapter

  • @XmlType,将Java类或枚举类型映射到XML模式类型
  • @XmlAccessorType(XmlAccessType.FIELD) ,控制字段或属性的序列化。FIELD表示JAXB将自动- 绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML。其他值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。
  • @XmlAccessorOrder,控制JAXB 绑定类中属性和字段的排序。
  • @XmlJavaTypeAdapter,使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。
  • @XmlElementWrapper ,对于数组或集合(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。
  • @XmlRootElement,将Java类或枚举类型映射到XML元素。
  • @XmlElement,将Java类的一个属性映射到与属性同名的一个XML元素。
  • @XmlAttribute,将Java类的一个属性映射到与属性同名的一个XML属性。

@XmlElement将Java对象的属性映射为xml的节点,在使用@XmlElement时,可经过name属性改变java对象属性在xml中显示的名称。如:java
  @XmlElement(name=“Address”)
  private String yourAddress;

@XmlRootElement用于类级别的注解,对应xml的跟元素,常与 @XmlType 和 @XmlAccessorType一块儿使用。如:this
  @XmlType
  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlRootElement
  public class Address {}s

@XmlAttribute用于把java对象的属性映射为xml的属性,并可经过name属性为生成的xml属性指定别名。如:.net
  @XmlAttribute(name=“Country”)
  private String state;

@XmlAccessorOrder用于对java对象生成的xml元素进行排序。它有两个属性值:
  AccessorOrder.ALPHABETICAL:对生成的xml元素按字母书序排序
  XmlAccessOrder.UNDEFINED:不排序
  
@XmlTransient用于标示在由java对象映射xml时,忽略此属性。即,在生成的xml文件中不出现此元素。

@XmlJavaTypeAdapter经常使用在转换比较复杂的对象时,如map类型或者格式化日期等。使用此注解时,须要本身写一个adapter类继承XmlAdapter抽象类,并实现里面的方法。

使用案例:

        
            javax.xml.bind
            jaxb-api
            2.1
        

方式一

@XmlRootElement(name = "item")
public class item {
    private String id;

    private String Area_Id;

    private String Area_Desc;

    private String Parent_Id;

    private String TreeLevel;


    public String getId() {
        return id;
    }

    @XmlAttribute(name = "id")
    public void setId(String id) {
        this.id = id;
    }

    public String getArea_Id() {
        return Area_Id;
    }
    @XmlElement(name = "Area_Id")
    public void setArea_Id(String area_Id) {
        Area_Id = area_Id;
    }
    @XmlElement(name = "Area_Desc")
    public String getArea_Desc() {
        return Area_Desc;
    }

    public void setArea_Desc(String area_Desc) {
        Area_Desc = area_Desc;
    }
    @XmlElement(name = "Parent_Id")
    public String getParent_Id() {
        return Parent_Id;
    }

    public void setParent_Id(String parent_Id) {
        Parent_Id = parent_Id;
    }

    public String getTreeLevel() {
        return TreeLevel;
    }
    @XmlElement(name = "TreeLevel")
    public void setTreeLevel(String treeLevel) {
        TreeLevel = treeLevel;
    }

}

@XmlRootElement(name = "MESSAGE")
@XmlAccessorType(XmlAccessType.FIELD)
public class MESSAGE {
    private String Verison;
    private HEADER HEADER;
    private ParamList ParamList;

    public String getVerison() {
        return Verison;
    }
    @XmlAttribute(name = "Verison")
    public void setVerison(String verison) {
        Verison = verison;
    }

    public HEADER getHEADER() {
        return HEADER;
    }

    public void setHEADER(HEADER HEADER) {
        this.HEADER = HEADER;
    }

    public ParamList getParamList() {
        return ParamList;
    }
    @XmlElement(name = "ParamList")
    public void setParamList(ParamList paramList) {
        ParamList = paramList;
    }
}
public class ParamList {
    private List item;

    public List getItem() {
        return item;
    }

    public void setItem(List item) {
        this.item = item;
    }
}

使用MESSAGE对象去接收XML报文

@PostMapping("/queryMESSAGE")
    public MESSAGE queryMESSAGE(@RequestBody MESSAGE message) {
        
        return message;
    }

方式二

@XmlRootElement(name = "spaceMESSAGE")
public class  ResponseXmlData {


    private ParamList paramList;


    public ParamList getParamList() {
        return paramList;
    }

    @XmlElement(name = "spaceParamList")
    public void setParamList(ParamList paramList) {
        this.paramList = paramList;
    }


    public static class ParamList{

        private List item;

        public List getItem() {
            return item;
        }


        @XmlElement(name = "item")
        public void setItem(List item) {
            this.item = item;
        }

        public static class item {

            private String Area_Id;

            private String Area_Desc;

            private String Parent_Id;

            private int TreeLevel;

            private int id;


            public int getId() {
                return id;
            }

            @XmlAttribute(name = "id")
            public void setId(int id) {
                this.id = id;
            }

            public String getArea_Id() {
                return Area_Id;
            }

            @XmlElement(name = "Area_Id")
            public void setArea_Id(String area_Id) {
                Area_Id = area_Id;
            }

            public String getParent_Id() {
                return Parent_Id;
            }

            @XmlElement(name = "Parent_Id")
            public void setParent_Id(String parent_Id) {
                Parent_Id = parent_Id;
            }

            public String getArea_Desc() {
                return Area_Desc;
            }

            @XmlElement(name = "Area_Desc")
            public void setArea_Desc(String area_Desc) {
                Area_Desc = area_Desc;
            }


            public int getTreeLevel() {
                return TreeLevel;
            }

            @XmlElement(name = "TreeLevel")
            public void setTreeLevel(int treeLevel) {
                TreeLevel = treeLevel;
            }
        }
    }
}

使用ResponseXmlData对象去接收XML报文

@PostMapping("/queryResponseXmlData")
    public ResponseXmlData queryResponseXmlData(@RequestBody ResponseXmlData responseXmlData) {
        
        return responseXmlData;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号