JAXB 省略@XmlRootElement 註解
問題
問題問題
問題
問題
問題從類型中使用類型JAXB(Java Architecture for XML Binding),您可能會遇到錯誤,其中沒有類別具有@XmlRootElement 註解。這會導致序列化期間出現異常。
解決方案了解 JAXB 註解規則
<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>JAXB XJC 使用特定規則來決定何時包含 @XmlRootElement 註解。這些規則很複雜,如[本文](文章連結)所述。 @XmlRootElement 的替代方案雖然 @XmlRootElement 提供了便利,但它是不是強制性的。您可以使用 [JAXBElement 包裝物件](連結到文件)來代替。然而,它們建構起來不太方便,因為它們需要了解 XML 元素名稱和命名空間。 使用 ObjectFactoryXJC 會在產生的類別模型旁邊產生一個 ObjectFactory 類別。此類別包含工廠方法,這些方法會圍繞您的物件建立 JAXBElement 包裝器,為您處理 XML 名稱和命名空間。探索 ObjectFactory 方法以尋找為目標物件建立 JAXBElement 的方法。 範例
以上是為什麼 JAXB 在產生 Java 類別時省略 @XmlRootElement 註解?的詳細內容。更多資訊請關注PHP中文網其他相關文章!