<xm:multiple> 属性
繰り返される特定の XML 要素のマップ先となるデータ構造変数を指定します。
<elementName xm:multiple="[dataType ]arrayMemberVariable in [dataType ]arrayVariable[, …]" >
xm:multiple
要素の値とメソッド変数との間のマッピングと、配列のメンバーとしての変数の役割を表す文。
<xm:multiple> タグを使用すると、繰り返される XML 要素の値を取り込むことができます。次の XML 例では、<part> 要素(およびその子)が、3 回繰り返されます。この繰り返しはリストに類似しているので、繰り返される値はデータ構造にマップすることで取り込めます。
<order> <part> <partID>19573</partID> <partQuantity>1</partQuantity> </part> <part> <partID>28912</partID> <partQuantity>1</partQuantity> </part> <part> <partID>39485</partID> <partQuantity>57</partQuantity> </part> </order>
<xm:multiple> 属性では、Java コードにおいて各繰り返し要素の値を格納するコレクションが宣言されていると想定しています。<xm:multiple> 属性値の構文では、基本的に繰り返し要素の各値がコレクション内のある場所に割り当てられ、コードによって繰り返し調べることが可能になります。
注意 : in 演算子は、<xm:multiple> 属性のコンテキストにおける予約語です。つまり、「in」という変数または型を <xm:multiple> 属性の値で使用すると、エラーが発生するということです。
次の例は、前掲のものと同じく、受信する XML メッセージを処理するように設計されています。この例では、<xm:multiple> 属性は <patID> 要素と <numberOfItems> 要素のコンテンツが、serialNumber 配列と quantity 配列のメンバーとして追加される必要があることを示しています。
/** * @jws:operation * @jws:parameter-xml xml-map:: * <placeOrder> * <order> * <part xm:multiple="String serial in serialNumber, int quant in quantity"> * <partID>{serial}</partID> * <numberOfItems>{quant}</numberOfItems> * </part> * </order> * </placeOrder> * * :: */ public void placeOrder(String[] serialNumber, int[] quantity) { for (int i = 0; i < serialNumber.length; i++) { System.out.println("Ordered " + quantity[i] + " of part " + serialNumber[i]); } }
注意 : xm プレフィックスとその URI は、任意の JWS ファイルで暗黙的に宣言されます。ただし、XMLMAP ファイルでプレフィックスを使用するには、ネームスペース プレフィックスおよび URI を宣言する必要があります。別のプレフィックスを宣言することで、プレフィックスを変更できます。