19 Haziran 2018 Salı

JAXB @XmlAccessorType Anotasyonu

Giriş
Şu satırı dahil ederiz.
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
Bu sınıfın içine verilen XmlAccessType anotasyonu PUBLIC_MEMBER, PROPERTY, FIELD, ya da NONE değerlerini alabilir.

XmlAccessType.FIELD
XML tag'leri field isimlerine göre oluşturulur.

Örnek
Elimizde şöyle bir xml olsun.
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <medicalReportYN>N</medicalReportYN>
  <regionCode>50001</regionCode>
</root>
Şöyle yaparız.
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class EstDto implements Serializable {
    private long regionCode;
    private String medicalReportYN;

    }
Örnek
Şöyle yaparız.
@XmlAccessorType(XmlAccessType.FIELD)
Örnek
Şöyle yaparız.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "uploadDocumentRequest", propOrder = {
    "positionId",
    "username",
    "documentItemId",
    "documentCod"
    })
public class UploadDocumentRequest {

  @XmlElement(required = true)
  protected String positionId;
  @XmlElement(required = true)
  protected String username;
  protected String documentItemId;
  protected String documentCod;

  //setters & getters 
}
XmlAccessType.NONE
@XmlAccessType.NONE yazısına taşıdım.

XmlAccessType.PROPERTY
XML tag'leri getter() isimlerine göre oluşturulur.

XmlAccessType.PUBLIC_MEMBER
Benim anladığım public field ve public getter/setter çiftine sahip olan alanlar. Daha detaylı bir açıklama şöyle.
*public fields
*annotated fields (private olsa bile @XmlAttribute ile işaretlidir)
*properties (getter setter metodu vardır ve @XmlAttribute ile işaretlidir)
Şöyle yaparız.
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class Foo {
  ...
}

Hiç yorum yok:

Yorum Gönder