2011-07-29 11 views
0

現在のJAXB marshallerアプリケーションでは、条件付きでXMLに要素を書き込む必要があります。 例を大学の宿題のように聞こえることなく考えることができるかどうかを見てみましょう。JAXB動的Xmlタグの生成

私は、meritとstatusというプロパティを持つStudentというクラスを持っています。すべての生徒がメリットを授けるわけではありません非フレッシュマン生徒のみがメリットを持っています(statusというプロパティは、生徒が新入生かどうかに関する情報を提供します)。学生のリストとマーシャルをxmlにトラバースしている間、Meritを条件付きで表示する必要があります。 JAXBを使用してXML要素を動的に作成するにはどうすればよいですか?私は生徒クラスをFreshManStudentsとOtherStudentsに分割し、他の生徒のためにメリットを@XMlTransientとして定義するというソリューションを考えることができます。 JAXBの目的のためだけに私のオブジェクトをリファクタリングするのはちょっと残念ですか?

また、getMeritのロジック内にロジックを持たせ、getMeritにFreshman学生のNULLを戻すことができます。 JAXBがヌルオブジェクトを無視すると仮定すると、問題を解決するためには有効な(読みやすい)方法ですか?あなたの意見や提案を

おかげ

public class Student { 
     private Merit merit; 
     private String status; 

     public Merit getMerit() { 
      return merit; 
     } 

     public void setMerit(Merit m) { 
      merit= m;   
     } 

     public String getStatus() { 
      return status; 
     } 

     public void setStatus(String s) { 
      status= s;   
     } 

    } 

答えて

0

クイックフィックスまた

は、私がgetMerit内部のロジックを持っているADN新入生の学生のための getMeritリターンNULLを持つことができます。 JAXBがNULL オブジェクトを無視すると仮定すると、その問題を解決するには有効な(読みやすい)方法ですか?私はプロパティと呼ばれるメリットとステータスと学生というクラスを持っている

これは働くだろう、とは(下)あなたの問題の説明と一致します。 すべての学生がメリットを授けるわけではありません。唯一の非新入生の学生は は、私は考えることができるの継承

についてメリット(プロパティと呼ばれる状態が 学生が新入生であるかどうかについての情報を提供します)


を持っています私の生徒クラスを FreshManStudentsとOtherStudentsに分割し、メリットを@XMlTransient 他の生徒に定義します。私のオブジェクトをリファクタリングするのはちょっと残念です。 JAXBの目的のためだけですか?

ご利用の場合は関係なく、JAXBの関与の継承のために呼び出します。

学生

public class Student { 

    private String status; 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String s) { 
     status= s;   
    } 

} 

NonFreshman

public class NonFreshman extends Student { 

    private Merit merit; 

    public Merit getMerit() { 
     return merit; 
    } 

    public void setMerit(Merit m) { 
     merit= m;   
    } 

} 
詳細情報10