Hakkında @XmlSeeAlso
@XmlSeeAlso
açıklama amacı sadece JAXB (JSR-222) uygulaması bu Resource
için meta işlerken aynı zamanda SomeItem
için meta işlemek gerektiğini bildirmek için sınıf. Bazı insanlar yanlışlıkla en yaygın olarak kullanılan kullanım durumu olduğundan, mirasın haritalandırılması ile ilgili olduğuna inanmaktadırlar. Bir sınıfın alt sınıfları Java yansıması kullanılarak belirlenemediğinden, JAXB uygulamasının alt sınıflar için eşlemelerin de oluşturulmasını bilmesi için @XmlSeeAlso
kullanılır.
Kaynak
bir Java sınıfına tekabül karmaşık tür adı @XmlType
ek açıklaması yoluyla beslenir:
Aşağıda, kullanım örneğini destekleyecek nasıl bir örneğidir.
package forum12288631;
import javax.xml.bind.annotation.XmlType;
@XmlType(name="some_item")
public class Resource {
}
Demo
kök öğesi adı @XmlRootElement
açıklama gelebilir ya JAXBElement
örneği aracılığıyla temin edilebilir. JAXBElement
örneğini oluşturacağız ve bunun Object
örneğini tuttuğunu göstereceğiz. Marshalled zaman bu çıktıya dahil edilecek xsi:type
özniteliği için olacaktır.
package forum12288631;
import javax.xml.bind.*;
import javax.xml.namespace.QName;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Resource.class);
Resource resource = new Resource();
JAXBElement<Object> jaxbElement = new JAXBElement<Object>(QName.valueOf("resource"), Object.class, resource);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(jaxbElement, System.out);
}
}
Çıktı
sonuç XML Resource
üzerinde @XmlType
açıklama geliyor JAXBElement
ve xsi:type
özelliği değeriyle verilen kök öğesi vardır.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="some_item"/>