2012-02-29 5 views
1

さまざまなコレクションのコレクションを生成したいと思います。 @XMLRootElementと共通の親を持つすべての各:コレクションのコレクションでXMLを生成

@XmlRootElement("as") 
public class As extends DTOs { 
    @XmlElement("a") 
    private Collection collection; 
    // 
} 

@XmlRootElement("bs") 
public class Bs extends DTOs { 
    @XmlElement("b") 
    private Collection collection; 
    // 
} 

@XmlRootElement("b") 
public class B extend DTO { 
} 

public class DTOs extends DTO { 
} 

public class Element Extend DTO{ 

    private Collection collection; 

    @XmlElementRef 
    getCollection() { 
     return collection; 
    } 
} 

作成するElementでannonationsどうあるべきか:

<as> 
    <a> 
     <name> 
    </a> 
    <bs> 
     <b><foo/></b> 
    <bs> 
    <cs> 
     <c/> 
    </cs> 
</as> 

私の最初の試みは@XmlAnyElement(lax=true)だったが、それが原因「不正な注釈」に例外をthew。私はそれが具体的なオブジェクトの@XmlElementとの衝突のためだと思います。

それは@XmlRootElement注釈が欠落しているので、それが要素としてタイプ「com.example.Bs」をマーシャリングする

できないと、実行時に文句を言い@XmlElementRefを追加

私はこれかもしれないと思います相続のためである。

+1

e 'jaxb'タグを削除し、 'sax ...'タグを削除しました。これはあなたの要件によく似ていると思います。最初にXSDを作成し、それに対応するJavaクラスを生成しようとしましたか(これはあなたの人生を楽にするかもしれません)? – home

+1

なぜ同じテーマの新しい質問ですか?前の質問を変更してみませんか? –

+0

は以前のものを削除しました。私はこれがより明確だと思う – ssedano

答えて

0

スキーマを定義し、このスキーマを使用してJAXBクラスを生成する必要があります。これらのクラスを使用すると、XMLとの間で変換を行うことができます。あなたは一般的なルートを持っている場合は

+0

私は注釈だけでそれを達成したいと思います。スキーマはありませんが、あなたの答えはありがたいです – ssedano

関連する問題