首頁  >  文章  >  Java  >  為什麼 JAXB 在產生 Java 類別時省略 @XmlRootElement 註解?

為什麼 JAXB 在產生 Java 類別時省略 @XmlRootElement 註解?

Linda Hamilton
Linda Hamilton原創
2024-11-01 19:42:29500瀏覽

Why Does JAXB Omit the @XmlRootElement Annotation When Generating Java Classes?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn