3

php を使用して SOAP サーバーを作成しましたが、渡された引数に応じて xml 要素に関してさまざまな結果をもたらす関数はほとんどありません。

さらに説明すると、関数は引数 a を受け取り、受信したデータに応じて、異なる数の子要素を持つ 2 つの異なる配列 (complextype) のいずれかを返すことができます。

例えば

   if a =9 then outcome is array/struct ,,,, 
   a[delta]=20 ,,, 
   a[sigma]=yellow 

   if a =3  ,
   a[aTotallyDifferentBallgame]=Omaha ,,,
   a[t]=1 ,,,
   a[theNumberOfElementsCanVary]=yup

この可能性のある差異を説明するために、スキーマで選択を利用しました。それにより、単純型または複合型のいずれであっても、結果が選択内の任意の単一要素になる可能性があることを暗示しようとしました。

理論的には論理的に聞こえ、php の SOAP クライアントで問題なく動作しますが、フォーム アプリケーションでビジュアル スタジオのサービス参照の追加機能を使用しようとすると、xs:choiceの使用がいくつかの不可解な理由で許可されていないことを理由に、アプリケーションはそのコードを作成できませんでした。

ここで本当に知りたいのは、これを機能させるために wsdl または SOAP サーバーにどのような変更を加える必要があるかということです。結果を 1 つの可能なシナリオのみに固定し、完全に異なる関数を使用して別のシナリオの結果を決定することで回避策を考えましたが、率直に言って、これは冗長で奇妙に思えます。

見逃したものはありますか?アイデアがあれば教えてください。ありがとう!

4

1 に答える 1

1

作成サービス参照機構は、スキーマを C# クラスにマップしようとしますが、スキーマ内の に対応する C# クラスには構造がありませんchoice。クラスは、1 つのプロパティまたは別のプロパティのいずれかの値を持つことはできませんが、両方のプロパティを持つことはできません。

私の提案はchoice、オプションの要素のシーケンスに置き換えることです。対応する C# クラスには各要素のプロパティがあり、そのうちの 1 つだけが値を持ち、もう 1 つの値は になりnullます。PHP サービスは 1 つのみの値を返すためです。一度にそれらの。

于 2013-04-01T20:01:22.317 に答える