JAXB Mengabaikan @XmlRootElement Anotasi
Isu
Apabila menjana kelas Java daripada skema XML menggunakan JAXB (Java Architecture for XML Binding), anda mungkin menghadapi ralat apabila tiada kelas mempunyai anotasi @XmlRootElement. Ini menghasilkan pengecualian semasa bersiri.
Penyelesaian
Fahami Peraturan Anotasi JAXB
JAXB XJC menggunakan peraturan khusus untuk menentukan bila hendak memasukkan anotasi @XmlRootElement. Peraturan ini rumit, seperti yang dibincangkan dalam [artikel ini](pautan-ke-artikel).
Alternatif kepada @XmlRootElement
Walaupun @XmlRootElement menyediakan kemudahan, ia adalah tidak wajib. Anda boleh menggunakan [objek pembalut JAXBElement](pautan-ke-dokumentasi) sebaliknya. Walau bagaimanapun, ia kurang senang untuk dibina kerana ia memerlukan pengetahuan tentang nama dan ruang nama elemen XML.
Gunakan ObjectFactory
XJC menjana kelas ObjectFactory bersama model kelas yang dijana. Kelas ini mengandungi kaedah kilang yang mencipta pembalut JAXBElement di sekeliling objek anda, mengendalikan nama XML dan ruang nama untuk anda. Terokai kaedah ObjectFactory untuk mencari kaedah yang mencipta JAXBElement untuk objek sasaran anda.
Contoh
<code class="java">import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.Marshaller; import org.fpml._2008.fpml_4_5.ObjectFactory; import org.fpml._2008.fpml_4_5.PositionReport; // ... // Create the JAXB context JAXBContext context = JAXBContext.newInstance(PositionReport.class); // Create the ObjectFactory ObjectFactory factory = new ObjectFactory(); // Create a PositionReport instance PositionReport positionReport = factory.createPositionReport(); // Create the JAXBElement wrapper JAXBElement<PositionReport> element = factory.createPositionReport(positionReport); // Create the Marshaller Marshaller marshaller = context.createMarshaller(); // Marshal the JAXBElement marshaller.marshal(element, System.out);</code>
Atas ialah kandungan terperinci Mengapa JAXB Meninggalkan Anotasi @XmlRootElement Apabila Menjana Kelas Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!