2

これは私がやりたいことです:

// Pull in the NuSOAP code
require_once('nusoap.php');
// Create the server instance
$server = new soap_server();

// Initialize WSDL support
$server->configureWSDL('server', 'urn:server');

$server->wsdl->addComplexType(
    'FilterObject',
    'complexType',
    'struct',
    'all',
    '',
    array(
        'myName' => array('name' => 'myName', 'type' => 'xsd:string'),
        'filter' => array('name' => 'filter', 'type' => 'tns:FilterObject[]')
    )
);

この構造を持つことができるように、それ自体に FilterObject の配列が必要です。

<myName></myName>
<FilterObject>
    <myName></myName>
    <FilterObject>
        <myName></myName>
        <FilterObject>Value</FilterObject>
        <FilterObject>
            <myName></myName>
            <FilterObject>Value</FilterObject>
            <FilterObject>Value</FilterObject>
            ...
        </FilterObject>
        <FilterObject>Value</FilterObject>
        <FilterObject>Value</FilterObject>
        <FilterObject>Value</FilterObject>
        <FilterObject>Value</FilterObject>
        ...
    </FilterObject>
</FilterObject>

どうすればこれを達成できますか?

私は今、ほぼ2日間苦労しています。私はウェブを検索しましたが、結論は出ませんでした。助けてください。

編集:

これが私がやった方法です。アレックスに感謝します。

循環参照を作成すると思っていたので、これが可能だとは思いませんでした。

また、「FilterObjectArray」は使用可能ですが、C# にプルしたときにクラス オブジェクトとして表示されないことにも注意しました。これは明らかに、配列が「FilterObject」オブジェクトの上に設定され、配列になっている単なるパラメーターであるためです。

これが理にかなっていることを願っています。

$server->wsdl->addComplexType(
    'FilterObject',
    'complexType',
    'struct',
    'all',
    '',
    array(
        'myName' => array('name' => 'myName', 'type' => 'xsd:string'),
        'filter' => array('name' => 'filter', 'type' => 'tns:FilterObjectArray')
    )
);

$server->wsdl->addComplexType(
    'FilterObjectArray',  // Name
    'complexType',    // Type Class
    'array',          // PHP Type
    '',               // Compositor
    'SOAP-ENC:Array', // Restricted Base
    array(),
    array(
        'children' => array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:FilterObject[]'),
    ),
    'tns:FilterObject'
);  
4

0 に答える 0