1

私が抱えている問題に似ていると思われる問題について、ここでいくつかの他の解決策を読みましたが、どれもうまくいかないようでした. とにかく、親要素と同じ名前の一連の要素を持つ石鹸関数を呼び出す必要があり、名前にはすべて「。」があります。それらの中で。以下は、必要なものに似た配列を作成する方法に頭を悩ませることができない wsdl の部分です。

また、「option.list」のサブ配列の出現回数は常に異なるため、php で何らかのループを使用してこれを構築する必要があります。どんな助けでも大歓迎です。

<xs:element minOccurs="0" name="option.list">
<xs:complexType>
    <xs:complexContent>
        <xs:extension base="cmn:ArrayType">
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="option.list">
                    <xs:complexType>
                        <xs:complexContent>
                            <xs:extension base="cmn:StructureType">
                                <xs:sequence>
                                    <xs:element minOccurs="0" name="SubItemId" nillable="true" type="cmn:DecimalType"/>
                                    <xs:element minOccurs="0" name="SubOptions" nillable="true" type="cmn:StringType"/>
                                    <xs:element minOccurs="0" name="SubItemName" nillable="true" type="cmn:StringType"/>
                                </xs:sequence>
                            </xs:extension>
                        </xs:complexContent>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>
</xs:element>

私が試したことのアイデア:

for($i=0;$i<count($options);$i++)
{
    $option_list[] = array(
      "option.list" => array(
      "SubItemId" => $i,
      "SubOptions" => $options[$i]['suboptions'],
      "SubItemName" => $options[$i]['subitemname']
      )
);
}

$instance = array(
    "option.list"=>$option_list
);

リクエストをデバッグすると、これが送信しているものであることが示され続けます。

<ns1:option.list><ns1:option.list/></ns1:option.list>

また、送信する前に print_r を実行すると、option.list 配列は次のようになります。

                [option.list] => Array
                    (
                        [0] => stdClass Object
                            (
                                [option.list] => stdClass Object
                                    (
                                        [SubItemId] => 0
                                        [SubOptions] => <?xml version="1.0" encoding="UTF-8" standalone="yes"?><form><select id="DBMS" label="DBMS type:" style="combo">MS SQL<option label="" /><option id="0" label="DB2">DB2</option><option id="1" label="IMS">IMS</option><option id="2" label="MS SQL">MS SQL</option><option id="3" label="Oracle">Oracle</option><option id="4" label="UDB">UDB</option></select><select id="Type" label="lation Type:" style="combo">Add New Instance<option label="" /><option id="0" label="Add New Environment">Add New Environment</option><option id="1" label="Add New Instance">Add New Instance</option><option id="2" label="Add New Database">Add New Database</option><option id="3" label="Modify Environment">Modify Environment</option><option id="4" label="Modify Instance">Modify Instance</option><option id="5" label="Modify Database">Modify Database</option><option id="6" label="Retire Environment">Retire Environment</option><option id="7" label="Retire Instance">Retire Instance</option><option id="8" label="Retire Database">Retire Database</option></select><select id="Complexity" label="xity:" style="combo">Complex [+$2500.00]<option label="" /><option id="0" label="Simple [+$500.00]">Simple [+$500.00]</option><option id="1" label="Medium [+$1000.00]">Medium [+$1000.00]</option><option id="2" label="Complex [+$2500.00]">Complex [+$2500.00]</option></select><select id="RecoveryTier" label="rability Tier:" style="combo">Tier 2<option label="" /><option id="0" label="Tier 1">Tier 1</option><option id="1" label="Tier 2">Tier 2</option><option id="2" label="Tier 3">Tier 3</option></select><select id="Backup" label=" Backup Required?" style="combo">Yes<option label="" /><option id="0" label="Yes">Yes</option><option id="1" label="No">No</option></select><select id="Replication" label=" tables require replication?" style="combo">UDB Dprop<option label="" /><option id="0" label="UDB Dprop">UDB Dprop</option><option id="1" label="Goldengate">Goldengate</option><option id="2" label="ASM">ASM</option><option id="3" label="No">No</option></select></form>
                                        [SubItemName] => DB Modification
                                    )

                            )

                    )
4

2 に答える 2

0

次のコードを提案しますが、試しませんでした:

for($i=0;$i<count($options);$i++) {
    $option_list[] = array(
       "SubItemId" => $i,
       "SubOptions" => $options[$i]['suboptions'],
       "SubItemName" => $options[$i]['subitemname']
    )
}

$instance = array(
    "option.list"=>$option_list
);

キー「option.list」を持つ親配列を作成する必要はないと思います。「option.list」という名前は、wsdl タイプの参照自体のためのものですが、まったく送信されません。wsdl は、「option.list」タイプは連想配列のカーディナル配列です:

array(
    array(
        'SubItemId' => <DECIMAL>,
        'SubOptions' => '<STRING>',
        'SubItemName' => '<STRING>'
    ),
    array(
        'SubItemId' => <DECIMAL>,
        'SubOptions' => '<STRING>',
        'SubItemName' => '<STRING>'
    ),
    array(
        'SubItemId' => <DECIMAL>,
        'SubOptions' => '<STRING>',
        'SubItemName' => '<STRING>'
    ),
    ...,
    ...
)
于 2013-11-08T14:16:58.253 に答える