【Java】【XML】【JAXB】 JAXB アノテーション ~ 入門編 ~

JAXB のアノテーション

`#`アノテーション説明
1@XmlRootElementXMLのルート要素であることを指定
2@XmlSeeAlsoこのクラスをバインドするときに他のクラスもバインドすることを指定
3@XmlElement現在のクラスをバインディングする際に他のクラスをバインドする
4@XmlAccessorTypeフィールド,プロパティの対応を決定する
5@XmlAttributeXML 属性にマップする
6@XmlElementWrapper主に、コレクションに関わるラッパー XML 要素を生成するために使用される
7@XMLMimeTypeプロパティーXML 表現を制御する MIME 型を関連付ける

サンプル

 * 以下の関連記事を参照のこと
https://blogs.yahoo.co.jp/dk521123/37149853.html

[01] @XmlRootElement

API仕様

https://docs.oracle.com/javase/jp/6/api/javax/xml/bind/annotation/XmlRootElement.html

@XmlRootElement(name="Name")
public class Name {
XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Name>
 <!-- 省略 -->
</Name>




[05] @XmlAttribute

API仕様

https://docs.oracle.com/javase/jp/6/api/javax/xml/bind/annotation/XmlAttribute.html

使い方

 * XmlAttribute アノテーションを、属性と紐付けたいフィールドの getterメソッド に付与する。

@XmlRootElement(name="Name")
public class Name {
   // 略

   @XmlAttribute(name="LastName")
   public String getLast() {
      return this.last;
   }
   // 略
XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Name LastName="Smith" ...

[06] @XmlElementWrapper

API仕様

https://docs.oracle.com/javase/jp/6/api/javax/xml/bind/annotation/XmlSeeAlso.html

サンプル

Javaクラス
@XmlRootElement(name="Name")
public class Name {
   // 略

   @XmlElementWrapper(name="list")
   @XmlElement(name="nickName")
   public List<String> getNickNames() {
      return this.nickNames;
   }
   // 略
XML
<Name LastName="Smith" FirstName="John">
    <list>
        <nickName>John-san</nickName>
        <nickName>John-chan</nickName>
    </list>
</Name>

その他参考文献

http://tomoyamkung.net/2014/01/17/java-jaxb-marshal-xml-element-wrapper/



関連記事

JAXBアノテーション ~ サンプル編 ~

https://blogs.yahoo.co.jp/dk521123/37149853.html

JAXBで、オブジェクトのXMLへの読み出し・書き出し

http://blogs.yahoo.co.jp/dk521123/32127865.html

JAXB のユーティリティ クラスをジェネリックで作る

http://blogs.yahoo.co.jp/dk521123/34947779.html

JAXB に関わるトラブルシューティング

http://blogs.yahoo.co.jp/dk521123/34963861.html