2011-12-06 7 views
2

私はゆっくりと怒っています。Castor - 単純な繰り返しグループのアンマーシャリング

public class GetDeadlineOffsetRequest { 

    private String deadlineCode = null; 
    private List<Parameter> parmList = new ArrayList<Parameter>(); 


    public GetDeadlineOffsetRequest() { 
     // Do nothing 
    } 

    public String getDeadlineCode(){ 
     return this.deadlineCode; 
    } 

    public void setDeadlineCode(String deadlineCode){ 
     this.deadlineCode = deadlineCode; 
    } 

    public List<Parameter> getParameters() { 
     return parmList; 
    } 

    public void setParameters(List<Parameter> parmList) { 
     this.parmList = parmList; 
    } 

} 

public class Parameter { 

    private String name = null; 
    private String value = null; 

    public Parameter() { 
     // Do Nothing 
    } 

    public String getName() { 
     return name; 
    } 

    public String getValue() { 
     return value; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 
} 
:私はこのようになり、簡単なのPOJO、GetDeadlineOffsetRequestとパラメータのペアを持って

<GetDeadlineOffset> 
    <deadlineCode>DC1</deadlineCode> 
    <parameters> 
     <parameter name="P1">Param 1</parameter> 
     <parameter name="P2">Param 2</parameter> 
    </parameters> 
</GetDeadlineOffset> 

:私はこのようなXML文書をアンマーシャリングしようとしています

私はマッピングファイルを使用していますが、これらのタグをパラメータリストにアンマーシャルしているようには見えません。

これは、マッピングでの私の最新の試みです:問題は<パラメータは>コンテナ要素と<パラメータであるという事実を中心に展開しているようだ

<class name="mypkg.GetDeadlineOffsetRequest"> 
    <map-to xml="GetDeadlineOffset"/> 
    <field name="DeadlineCode" type="java.lang.String"> 
     <bind-xml name="deadlineCode" node="element" /> 
    </field> 
    <field name="Parameters" type="mypkg.Parameter" collection="collection"> 
     <bind-xml name="parameters" node="element" /> 
    </field>  
</class> 
<class name="mypkg.Parameter"> 
    <map-to ns-uri="http://services.blah.com/AMM/Deadline/v1"/> 
    <field name="Value" type="java.lang.String"> 
     <bind-xml name="parameter" node="element" /> 
    </field> 
    <field name="Name" type="java.lang.String"> 
     <bind-xml name="name" node="attribute" location="parameter" /> 
    </field> 
</class> 

>は、反復要素です。上記のマッピングは、Castorに<パラメータ>が繰り返し可能であることを伝えています。

私は数日間、あらゆる種類のマッピングの組み合わせを試みてきました。私はコーナーに向かって作業してきました。

誰かが間違っているのを見ることはできますか?

私はCastor XML 1.3.2を使用しています。

答えて

4

私は次のようなマッピングといくつかの成功を持って管理している:

<class name="myPkg.GetDeadlineOffsetRequest"> 
    <map-to xml="GetDeadlineOffset"/> 
    <field name="DeadlineCode"> 
     <bind-xml name="deadlineCode" /> 
    </field> 
    <field name="parameters" type="myPkg.Parameter" collection="collection"> 
     <bind-xml name="parameter" location="parameters"> 
      <class name="myPkg.Parameter"> 
       <field name="Name"> 
        <bind-xml name="name" node="attribute" /> 
       </field> 
       <field name="Value"> 
        <bind-xml node="text"/> 
       </field> 
      </class> 
     </bind-xml> 
    </field>   
</class> 

トリックを使用するようにしましたlocation = "parameters"およびnode = "text"bind-xml要素の2つにあります。私は正常にマーシャリングし、このマッピングを使用してアンマーシャリングしました。

+1

ありがとうございました、場所= "パラメータ"部分は私に同様の問題を解決するのに役立ちました。 – haventchecked

1

読み込みしようとしているXML形式を制御できますか、それともこの形式でなければなりませんか?

<GetDeadlineOffset> 
    <deadlineCode>DC1</deadlineCode> 
    <parameters> 
     <parameter name="P1">Param 1</parameter> 
     <parameter name="P2">Param 2</parameter> 
    </parameters> 
</GetDeadlineOffset> 

この形式を書き出すことはできましたが、Castorはそれを読み取っても例外をスローしませんでした。

それが正常にマーシャリングおよびアンマーシャリングする場所、私が得ることができる最も近いです:

<GetDeadlineOffset> 
    <deadlineCode>DeadlineCode</deadlineCode> 
    <parameters> 
     <parameter name="Name1" value="Value1"/> 
     <parameter name="Name2" value="Value2"/> 
    </parameters> 
</GetDeadlineOffset> 
+0

ブライアンに感謝します。残念ながら私はXMLフォーマットを制御することはできません。ありがたいことに私は問題を解決することに成功しました。私は完全性のためにソリューションを投稿しようとしています。 –

+0

Congrats Steve。私はあなたのソリューションを活用していきます。 – Brian

関連する問題