2016-04-07 10 views
-2

私はJavaプロジェクトでJAXBを使っています。JAXB Marshall&Unmarshall Java complexクラス

JAXBでデータを処理したいのですが、これらのクラスに問題があります。

マーシャリングとアンマーシャリングの機能を使用するには、フィールドにどのようなタグを追加する必要がありますか?

Wrapper.class

@XmlElement(name="database") 
public class Wrapper { 

    private List <Person> persons; 
    private List <Quote> quotes; 

    @XmlElement(name="persons") 
    public List<Person> getPersons(){ 
     return=this.persons; 
    } 

    @XmlElement(name="quotes") 
    public List<Quote> getQuotes(){ 
     return=this.quotes; 
    }  
} 

Person.class

@XmlRootElement(name="person") 
public class Person { 

    private final StringProperty name; 
    private final StringProperty telephone; 
    private final StringProperty mail; 
    private final ObjectProperty<LocalDate> date; 
    //I have problem with this complex field: 
    private final ObjectProperty<List <Job>> jobs; 

    //Constructor getters and setters 
    ... 
} 

Job.class

@XmlRootElement(name="job") 
public class Job { 

    private final StringProperty roleName; 
    private final StringProperty id; 
    //I have problem with this complex field too: 
    private final ObjectProperty<List <Subrole>> subroles; 


    //Constructor getters and setters 
    ... 
} 

Subrole.class

@XmlRootElement(name="subroles") 
public class SubRole { 
    private final StringProperty subRoleName; 
    private final ObjectProperty<List <String>> actions; 

    //really don't know how to treat this 
    private final ObjectProperty<List<List <Activity>>> activities; 

    //Constructor getters and setters 
    ... 
} 

Activity.class

@XmlRootElement(name="activities") 
public class Activity{ 
    private final StringProperty activityName; 
    private final FloatProperty salary; 
    private final FloatProperty hours; 


    //Constructor getters and setters 
    ... 
} 
+3

まず、あなたが苦しんでいる正確な問題は何ですか?次に、なぜすべてのクラスをルート要素として定義しましたか?私は人がルート要素でなければならないと思う。 – Raptor

+0

クイック返信ありがとう、私はこのような階層的な複雑なオブジェクトを管理する方法を知っていない –

答えて

0

あなたは、そのトピックについての知識の欠如を持っている場合、あなたはEclipseを使用している場合は、私はあなたが(あなたがすることができ、あなたのクラス階層に応じた独自のXSD(XMLスキーマDefiniton)ファイルを作成アドバイスすることができますのスクリーンショットAltova XML製品のタイプ:アプリケーション。その後、xsdをプロジェクトに移動し、Eclipseで自動的にJAXBクラスを生成します(xsdを右クリックすると生成オプションが表示されます)。

JAXBクラスを生成するので、それらを検査し、それらのタイプのオブジェクトを管理する方法を学ぶことができます。

+0

ありがとう、私はマーシャリングとアンマーシャリングのためのアダプタとラッパーを手動で実装しています、私は試してみましょう –