14

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しますが、アプリケーションの起動時に XML ドキュメントが改ざんされました。

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

4

2 に答える 2

24

パッケージ レベルの@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アノテーションの名前空間プロパティを使用して、特定の要素の名前空間をオーバーライドできます。

詳細については

于 2013-05-16T10:19:22.683 に答える
5
  • @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>
于 2016-02-05T09:37:49.717 に答える