Re: [SOAP] nested object in SOAP result
| From: | Richard Quadling | Date: | Wed, 08 Sep 2010 15:14:37 +0000 |
| Subject: | Re: [SOAP] nested object in SOAP result | ||
| References: | 1 2 3 4 5 6 | Groups: | php.soap |
| Request: | Send a blank email to php-soap+get-3109@lists.php.net to get a copy of this message | ||
On 8 September 2010 16:08, Richard Quadling <rquadling@gmail.com> wrote:
> On 8 September 2010 15:43, nik600 <nik600@gmail.com> wrote:
>> On Wed, Sep 8, 2010 at 2:50 PM, Richard Quadling <rquadling@gmail.com> wrote:
>>> On 8 September 2010 11:25, nik600 <nik600@gmail.com> wrote:
>>>> On Wed, Sep 8, 2010 at 12:10 PM, Richard Quadling <rquadling@gmail.com>
>>>> wrote:
>>>>> On 7 September 2010 19:12, nik600 <nik600@gmail.com> wrote:
>>>>>>
>>>>
>>>
>>> Scalar or Struct - that's the choice. An "array" is a struct.
>>>
>>> You are supplying an array of attributes.
>>>
>>> The struct is the array.
>>>
>>> Nothing is actually wrong.
>>>
>>>
>>> --
>>> Richard Quadling
>>> Twitter : EE : Zend
>>> @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY
>>>
>>
>> Ok, but on server-side i can do
>>
>> foreach($Element->Elements as $v){
>> // process Element $v
>> }
>>
>> and on client-side i have to do
>>
>> foreach($Element->Elements->Struct as $v){
>> // process Element $v
>> }
>>
>>
>> --
>> /*************/
>> nik600
>> http://www.kumbe.it
>>
>
> Yep!
>
> That's what your WSDL says it is.
>
> ElementA contains PropertyA1 and Elements (of type ElementB)
> ElementB is an array of PropertyB1s
>
> ElementA->Elements->ElementB->PropertyB1
>
> The array is a construct in its own right.
>
>
> http://search.cpan.org/~rybskej/SOAP-Data-ComplexType-0.044/lib/SOAP/Data/ComplexType.pm#Using_arrays_and_Array_type_fields
> gives some more info on this.
>
> The "array" isn't part of this WSDL file, so it is just a structure
> and no dereferencing ( Elements->ElementB->PropertyB1 =>
> Elements->PropertyB1) (Don't know the exact terminology).
>
>
>
> --
> Richard Quadling
> Twitter : EE : Zend
> @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY
>
From one of my services ...
<definitions
name="***************"
targetNamespace="************"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="************"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<types>
<xsd:schema targetNamespace="*************">
<xsd:complexType name="ArrayOfCustomer_V1_0">
<xsd:complexContent>
<xsd:restriction base="soap-enc:Array">
<xsd:attribute ref="soap-enc:arrayType"
wsdl:arrayType="tns:Customer_V1_0[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="Customer_V1_0">
<xsd:all>
<xsd:element name="UniqueID" type="xsd:int"
nillable="true"/>
<xsd:element name="Customer" type="xsd:string"
nillable="true"/>
<xsd:element name="DateAdded" type="xsd:dateTime"
nillable="true"/>
<xsd:element name="DateRemoved" type="xsd:dateTime"
nillable="true"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="Customers_V1_0">
<xsd:all>
<xsd:element name="Customers" type="tns:ArrayOfCustomer_V1_0"/>
</xsd:all>
</xsd:complexType>
...
It seems SOAPClient understands soap-enc:Array / soap-enc:arrayType
and so my usage is ...
foreach($Results->Customers as $o_Customer) {
echo $o_Customer->UniqueID, $o_Customer->Customer, date('r',
$o_Customer->DateAdded'), PHP_EOL;
}
sort of thing.
--
Richard Quadling
Twitter : EE : Zend
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY