PHP SOAP クライアントを使用して、次のように wsdl で定義された ID 要素を含むオブジェクトを送信しています。
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int"/>
次のように、ID 値を含む配列を PHP SOAP クライアントに渡します。
ID' => string '' (length=0)
これにより、SOAP クライアントからの xml は次のようになります。
<ns1:ID>0</ns1:ID>
私はこれが欲しい:
<ns1:ID></ns1:ID>
このように ID の配列値を null に設定しようとしましたが、それでも値が 0 の xml が生成されます。
$myarray["ID"] = null;
質問: PHP SOAP クライアントを使用して int 要素の null 値を送信する方法はありますか?
更新 「カラマズーのネイト」が示唆するように、 $myarray["ID"] = null; を変更しました。に:
$myarray["ID"] = array('_' => '','xsi:nil' => "true");
これにより、次のような別の配列である配列要素 'ID' が生成されました。
'ID' =>
array (size=2)
'_' => ''
'xsi:nil' => string 'true'
xml は次のようになります。
<ns1:ID>1</ns1:ID> //where did the 1 come from?
わかりやすくするために、PHP SOAP クライアントの使用方法を次に示します。
$client->SomeFunction(array('application' => $myarray));
SOAP クライアントに渡される配列は、XML 要素名として使用される要素名に関連付けられているため、渡される配列の ID 要素内の配列は何らかの形で 1 を返していると思います。しかし、いずれにしても 'xsi:ni ;' XML のどこにも表示されません。