@XmlRootElement註解定義xml的根節點 通過name改變根節點的xml值
@XmlRootElement(name = "amimal_test")
@XmlType註解 指定序列生成的xml節點順序
@XmlType的propOrder 屬性時,必須列出JavaBean對象中的所有屬性【是javaBean裏面的屬性 跟XmlElement的name設置無關】,否則會報錯
XmlAccessType.FIELD:java對象中的所有成員變量
XmlAccessType.PROPERTY:java對象中所有通過getter/setter方式訪問的成員變量
XmlAccessType.PUBLIC_MEMBER:java對象中所有的public訪問權限的成員變量和通過getter/setter方式訪問的成員變量
XmlAccessType.NONE:java對象的所有屬性都不映射爲xml的元素
因此,如果java對象中的private成員變量設置了public權限的getter/setter方法,就不要在private變量上使用@XmlElement和@XmlAttribute註解,
只能在getter/setter方法上使用@XmlElement和@XmlAttribute註解,否則由java對象生成xml時會報同一個屬性在java類裏存在兩次的錯誤。
同理,如果@XmlAccessorType的訪問權限爲XmlAccessType.NONE,如果在java的成員變量上使用了
@XmlElement或@XmlAttribute註解,這些成員變量依然可以映射到xml文件。
@XmlTransient用於標示在由java對象映射xml時,忽略此屬性,在生成的xml文件中不出現此元素。
@XmlAttribute:該屬性作爲類xml節點的attribute
@XmlElement:該屬性作爲xml的element,且可以增加屬性(name="NewElementName"),那麼生成的xml串的elment的標籤是NewElementName
@XmlElementWrapper 修改節點的名字
修改xml的namespace 需要再package-info.java文件中添加註解
@XmlSchema(
namespace="http://hyj.cn",
elementFormDefault=XmlNsForm.QUALIFIED)
package com.hyj.xml;
import javax.xml.bind.annotation.*;
@XmlJavaTypeAdapter
JAXB能夠內置支持List和Set集合,但是對於Map的支持需要自己處理。
繼承自抽象類XmlAdapter<ValueType,BoundType>
重寫marshal和unmarshal的方法
類型參數:
BoundType - JAXB 不知道如何處理的一些類型。編寫一個適配器,以便允許通過 ValueType 將此類型用作內存表示形式。
ValueType - JAXB 無需其他操作便知道如何處理的類型。