2011-09-24 5 views
0

私は、MxN配列を意味するデータベース結果を返す関数でWebServiceを開発しています。私の質問は、WSDLでこれを定義するためのより良い方法だ何を、次のとおりです。wsdlで多次元配列を定義するベストプラクティス

  1. を定義したメッセージには、この結果セットを置く
  2. 、行のシーケンスとして結果セットを定義し、カラム(列)の配列として行を定義します。行を(文字列)列のシーケンスとして直接入力します。

したがって、行を独自のデータ型にラップしてこのメ​​ッセージを応答メッセージに入れるか、独自のデータ型を残して、行のシーケンスを直接メッセージに入れますか?

ありがとうございました!

答えて

2

行の場合、結果の列に対応する子要素を持つ要素を定義します。

<row> 
    <field1>...</field1> 
    <field2>...</field2> 
    ... 
    <fieldN>...</fieldN> 
</row> 

次に、行要素のラップされたリストを返します。

<rows> 
    <row> 
     ... 
    </row> 
    <row> 
     ... 
    </row> 
    ... 
    <row> 
     ... 
    </row> 
</rows> 

(私はここでは簡略化のためrow/rowsを使用しています。あなたが好きな要素、行のデータが何を表すかを反映通常名に名前を付けることができます)。

+0

okとそれ以降は私のメッセージに行を入れますか?行要素を私のメッセージに入れるだけのスタイルはありませんか?それは私が尋ねる理由の一つのJavaオブジェクトを保存します;-) – strauberry

+0

@strauberry:あなたが言っていることを理解しています。なぜ要素を直接書くことができるのでしょうか?そうですか?まあ... **最初のこと**、あなたはXMLをより人間が読めるようにします。行は親と**の2番目の**の下にグループ化されますが、より重要なのは相互運用性を得ることです。 WS-Iに準拠するためには、SOAPメッセージのsoap:bodyは子を1つしか持たない必要があります。あなたのメッセージに行を直接(親のラッパーはない)置くと、このルールに違反し、相互運用性が失われます。メッセージの中では、それほど重要ではありませんが、その時点では1番めの読みやすさがわかりません。 –

+0

@strauberry:Webサービスを使用する際のベストプラクティスの出発点は次のとおりです。http://en.wikipedia.org/wiki/Web_Services_Interoperability –