0

このように設定された、取り込むXMLがいくつかあります

<project>
    <client>Some client</client>
    <description>some description</description>
</project>

このデータをアンマーシャリングする必要があるオブジェクトは、Project と Client です。このためにキャスター マッピングを設定するにはどうすればよいですか?

<class name="Project">
  <field name="description" type="string" />
  <field name="client" type="Client" />
</class>

上記を使用し、文字列を受け取るコンストラクターがある場合、Client クラスのマッピングも行う必要がありますか? もしそうなら、それはどのようにする必要がありますか?

4

1 に答える 1

0

Castorのデフォルト(イントロスペクションを使用してgetter / setterメソッドでフィールドのリストを取得し、クラス名とメンバー名に基づいてXMLタグを生成する)が、必要なことのほとんどを実行する可能性は十分にあります。ただし、出力内のタグの順序や正確なフォーマットなどを確認するために、おそらくそれを微調整する必要があることに気付くでしょう。

追加する必要のある重要な項目はmap-to、各クラスのXML定義(各XMLノードを適切なクラスにアンマーシャリングできるようにする)とbind-xml各フィールドのノードであり、フィールドを正しい場所にマップできるようにします。フィールドに対して行う追加の変更が1つありますclient。クライアントの受信データのフィールド値が、ノードの子としてではclientなく、ノードの子として表示されることに気付くでしょうproject。これを行うには、を指定container="true"します。これは、クラスがマップされず、そのフィールドのみがマップされることを意味します。

(テストされていません)あなたが持っているクライアント文字列が。というフィールドに入ると仮定すると、このようなものになりますname

<class name="Project">
 <map-to xml="project"/>
 <field name="client" type="Client" container="true"/>
 <field name="description" type="string"><bind-xml name="description"/></field>
</class>
<class name="Client">
 <field name="name" type="string"><bind-xml name="client"/></field>
</class>
于 2011-03-23T18:39:40.027 に答える