SOAP:返回PHP中的xsd:any元素数组

时间:2012-12-12 09:06:34

标签: php soap xsd wsdl

我需要根据WSDL返回SOAP调用答案。一切正常,除了返回xsd:any元素。 WSDL的一部分,我遇到了问题(这是出于疑问的答案)。


    xsd:complexType name="data"
        xsd:sequence
         xsd:any minOccurs="1" maxOccurs="unbounded"
        xsd:sequence
    xsd:complexType

我尝试了什么:


    foreach($data as $name=>$value) {
        $object->data->any[$name] = $value;
    }
    return $object;

SOAP调用返回如下答案:


    ..response>
    -data>value1value2value3value4-/data>
    .../response>

虽然在返回对象之前,可以看出,对象是按原样创建的:


    $object->data->any[name1] = value1
    $object->data->any[name2] = value2

    etc...

但是在返回asnwer中,所有值都只是将一个字符串放入一个返回字段中。此代码和返回与任何其他字段类型(例如xsd:string等)正确一致。

如果是xsd:any类型,如何根据名称和值获取多个字段的答案?

由于

2 个答案:

答案 0 :(得分:0)

解决了这个问题。

我必须为该字段创建SoapVar对象。


    $o = new Object();
    $o->field = $value;
    $object->data = new SoapVar($field, XSD_ANYTYPE);
    return $object;

由于

答案 1 :(得分:-1)

这也应该有效:

$object->data = new SoapVar($data, SOAP_ENC_OBJECT);