这就是我想要做的:
// 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”可用。这显然是因为数组只是设置在“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'
);