背景
公司项目和别家公司合作开发,涉及到了接口对接,对方提供的接口文档中数据交互全部都是XMl格式,第一次遇到xml数据的接口,这里记录下对XMl数据的处理。
开始
1.认识下XMl
❤ XML 指可扩展标记语言(EXtensible Markup Language)
❤ XML 是一种标记语言,很类似 HTML
❤ XML 的设计宗旨是传输数据,而非显示数据
❤ XML 标签没有被预定义。您需要自行定义标签。
❤ XML 被设计为具有自我描述性。
❤ XML 是 W3C 的推荐标准
<?xml version="1.0"?>
<info type="1"> //info叫做节点,type叫做节点属性
<flag>true</flag>
<msg/>
<roles>
<role>
<uniqueId>ff8081815a7dfa67015a7dfaf43c0004</uniqueId>
<name>文档员</name>
<parent>OA</parent>
<type>2</type>
<sortNumber>999</sortNumber>
<roleLX>0</roleLX>
<status>0</status>
</role>
</roles>
</info>
2.JAXB
1、JDK中JAXB相关的重要Class和Interface
JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。
Marshaller接口,将Java对象序列化为XML数据。
Unmarshaller接口,将XML数据反序列化为Java对象。
2、JDK中JAXB相关的重要Annotation
❤ @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属性。
3.使用RestTemplate 接收XML数据转为对象
返回的xml数据
<info>
<flag>true</flag>
<msg></msg>
<roles type="1">
<role>
<uniqueId>ff8081815b64f631015c68559d5f0025</uniqueId>
<name>路段中心系统操作</name>
<parent>jchc_zhdd</parent>
<type>2</type>
<sortNumber>999</sortNumber>
<roleLX>2</roleLX