php - 包装文档/文字数组的示例

标签 php arrays xml soap

我很难找到包装文档/文字样式的简单数组的可靠示例。

考虑一个 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/

相关文章:

php - PHP 中的 JSON API 请求无法正常工作

c - "Expected expression before ' { ' token"

javascript - 映射具有未知长度和未知键名称的对象数组

sql-server - SQL 在主表中插入数据,然后在明细表中引用数据

java - 如何从属性文件中指定的 XML 文件加载 Spring bean 定义?

java - 如何防止 JAXB 在编码期间写入未使用的 namespace

php - 这三个sql查询有什么区别?

php - Symfony2 : Repository's findAll() returns multiple instances of same entity instead of all entities

javascript - twilio 视频通话错误 - 无法将参与者添加到对话

c++ - 动态字符串数组构造函数和 null 返回