web-dev-qa-db-ja.com

JAXB @XmlRootElementアノテーションについて

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に実行させるのではなく、手動でクラスを生成しますが、XSDをjarファイル(内部ではなく、jarファイルを含むフォルダーに格納)で提供するため、アプリケーションが起動するときにXMLドキュメントが改ざんされているかどうかを検証します。

したがって、XSDファイルでは、targetNamespace@XmlRootElement(namespace = "de.vogella.xml.jaxb.model")として上記で宣言されているため、_de.vogella.xml.jaxb.model_になります。

13
Little Child

パッケージレベルの@XmlSchemaアノテーションを使用して、モデルのネームスペースの資格を指定することをお勧めします。パッケージレベルの注釈は、以下に示すように正確なコンテンツを含むpackage-infoという特別なクラスに入ります。その注釈は、明示的な名前空間が指定されていないドキュメント内のすべての要素がその名前空間を使用することを意味します。

org/example/foo/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;

ネームスペースのオーバーライド

  • @XmlSchemaアノテーションを使用して、クラスのすべてのプロパティに対して@XmlTypeで指定された名前空間をオーバーライドできます。
  • @XmlRootElementまたは@XmlElementアノテーションの名前空間プロパティを使用して、特定の要素の名前空間をオーバーライドできます。

詳細情報

24
bdoughan
  • @XmlRootElement注釈を使用して、クラスまたは列挙型をXML型にマッピングできます。

  • 最上位クラスまたは列挙型に@XmlRootElementアノテーションが付けられている場合、その値はXMLドキュメント内のXML要素として表されます。

  • より多くのアイデアを得るには、以下に示す例に従ってください。

XMLスキーマタイプに要素を関連付ける

// 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>
3
Krutik