簡體   English   中英

了解JAXB @XmlRootElement批注

[英]Understanding JAXB @XmlRootElement annotation

我在這里使用教程來理解JAXB。

當作者來創建文檔的根時,作者開始如下:

//This statement means that class "Bookstore.java" is the root-element of our example
@XmlRootElement(namespace = "de.vogella.xml.jaxb.model")
public class Bookstore {
       ...
}  

雖然我將手動生成我的類而不是讓Eclipse這樣做,但我將提供一個帶有我的jar文件的XSD (不是打包在內部,而是在包含jar文件的文件夾中),這樣當我的應用程序啟動時,它將驗證XML是否文件被篡改。

因此,在XSD文件中, targetNamespace將是de.vogella.xml.jaxb.model因為它在上面被聲明為@XmlRootElement(namespace = "de.vogella.xml.jaxb.model")

我建議使用包級別@XmlSchema批注為您的模型指定命名空間限定。 包級別注釋位於一個名為package-info的特殊類中,該類包含如下所示的確切內容。 該注釋將意味着文檔中沒有給定顯式命名空間的所有元素都將使用該命名空間。

組織/示例/富/ package-info.java

@XmlSchema(
    namespace = "http://www.example.org/foo",
    elementFormDefault = XmlNsForm.QUALIFIED)
package org.example.foo;

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

覆蓋命名空間

  • 您可以使用@XmlType批注覆蓋@XmlSchema為類中的所有屬性指定的命名空間。
  • 您可以使用@XmlRootElement@XmlElement批注上的namespace屬性覆蓋給定元素的命名空間。

欲獲得更多信息

  • @XmlRootElement注釋可用於將類或枚舉類型映射到XML類型。

  • 使用@XmlRootElement批注對頂級類或枚舉類型進行批注時,其值在XML文檔中表示為XML元素。

  • 按照下面給出的示例獲得更多想法:

將元素與XML Schema類型相關聯

// Example: Code fragment
 @XmlRootElement
 class Point {
    int x;
    int y;
    Point(int _x,int _y) {x=_x;y=_y;}
 }

 //Example: Code fragment corresponding to XML output
 marshal( new Point(3,5), System.out);


 <!-- Example: XML output -->
 <point>
   <x> 3 </x>
   <y> 5 </y>
 </point>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM