我很难找到包装文档/文字样式的简单数组的可靠示例。
考虑一个 PHP 函数,该函数生成一个最大计数的数组。
/**
* @param int $max
* @return string[] $count
*/
public function countTo($max)
{
$array = array();
for ($i = 0; $i < $max; $i++) {
$array[] = 'Number: ' . ($i + 1);
}
return $array;
}
为此生成的 WSDL 类型是:
<xsd:complexType name="countTo">
<xsd:sequence>
<xsd:element name="max" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="countTo" nillable="true" type="ns:countTo"/>
<xsd:complexType name="ArrayOfCount">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="count" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="countToResponse">
<xsd:sequence>
<xsd:element name="count" type="ns:ArrayOfCount"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="countToResponse" nillable="true" type="ns:countToResponse"/>
正文中的请求如下所示:
<ns1:countTo>
<max>5</max>
</ns1:countTo>
但是响应是什么样的,约定是什么?
目前SoapServer正在生成
<ns1:countToResponse>
<count>
<count>Number: 1</count>
<count>Number: 2</count>
<count>Number: 3</count>
<count>Number: 4</count>
<count>Number: 5</count>
</count>
</ns1:countToResponse>
我不确定嵌套的 count
元素。也许这应该是 item
(并且需要更新 WSDL 才能实现)。
<ns1:countToResponse>
<count>
<item>Number: 1</item>
<item>Number: 2</item>
<item>Number: 3</item>
<item>Number: 4</item>
<item>Number: 5</item>
</count>
</ns1:countToResponse>
最佳答案
确实没有这方面的约定。当您有一个 item
数组来命名集合 items
时,有时会很方便。但是由于您的元素被命名为 count
有点困难,因为 counts
不会是一个可接受的答案。您可以选择 result
,但只有当它也是唯一的容器元素时才适合,如您的示例所示。
<xsd:complexType name="countToResponse">
<xsd:sequence>
<xsd:element name="result" type="ns:ArrayOfCount"/>
</xsd:sequence>
</xsd:complexType>
关于php - 包装文档/文字数组的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376437/