我正在尝试处理通过WSDL提供某些数据的PHP代码。 WSDL文件中有两种方法,一种是工作方式,另一种是完全相同的方法。
GetAllProducts返回:
<ns1:GetAllProductsResponse>
<describedProductArray>
<DescribedProduct>
<id> ... </id>
<foo> ... </foo>
</DescribedProduct>
<Describedproduct>
...
</DescribedProduct>
...
</describedProductArray>
etc
但GetAllDischargedProducts返回
<ns1:GetAllDischargedProductsResponse>
<dischargedProductArray>
<DischargedProduct>
<SOAP-ENC:Struct>
<DischargeDate> ... </DischargeDate>
<id> ... </id>
</SOAP-ENC:Struct>
<SOAP-ENC:Struct>
<DischargeDate> ... </DischargeDate>
<id> .. </id>
</SOAP-ENC:Struct>
...
</DischargedProduct>
<dischargedProductArray>
我必须摆脱这些元素并将每组数据放入一个单独的元素中。 PHP部分看起来不错。我想这个问题出现在WSLD文件中。
描述数据的部分是:
<complexType name="DescribedProduct">
<complexContent>
<extension base="self:Product">
<sequence>
<element name="Name" type="self:Name" />
<element name="Barcode" type="self:Barcode" />
<element name="Exportation" type="boolean" />
<element name="Company" type="self:Company" />
<element name="Prescription" type="self:Prescription" />
<element name="CommercialForm" type="self:CommercialForm" />
<element name="IngredientArray" type="self:IngredientArray" />
<element name="DayToExcretion" type="self:DayToExcretion" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="DescribedProductArray">
<sequence>
<element name="DescribedProduct" type="self:DescribedProduct" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<simpleType name="DischargeDate">
<restriction base="date" />
</simpleType>
<complexType name="DischargedProduct">
<complexContent>
<extension base="self:Product">
<sequence>
<element name="DischargeDate" type="self:DischargeDate" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="DischargedProductArray">
<sequence>
<element name="DischargedProduct" type="self:DischargedProduct" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
答案 0 :(得分:1)
这是因为DischargeDate
简单类型已被赋予限制。我建议对此元素使用简单的字符串类型,并对代码中的日期执行任何类型的验证。
因此,将DischargedProduct
定义更改为:
<complexType name="DischargedProduct">
<complexContent>
<extension base="self:Product">
<sequence>
<element name="DischargeDate" type="string" />
</sequence>
</extension>
</complexContent>
</complexType>
并删除DischargeDate
。