1
我看到我的SOAP响应的某些节点在Flex 4中消失。我正在使用使用PHP/nusoap编写的<mx:WebService>
,并且99%的响应在Flex中正确解序列化。出于某种原因,这个片段是造成问题:SOAP响应在Flex 4中未正确反序列化
RAW XML:
<data xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:reportData[1]">
<item xsi:type="tns:reportData">
<name xsi:type="xsd:string">Tue. 8 Mar. 2011</name>
<year xsi:type="xsd:int">2011</year>
<month xsi:type="xsd:int">3</month>
<day xsi:type="xsd:int">8</day>
<counts xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:double[3]">
<item xsi:type="xsd:double">26</item>
<item xsi:type="xsd:double">11</item>
<item xsi:type="xsd:double">11</item>
</counts>
</item>
</data>
的唯一元素在Flex ProxyObject显示是 “名”。所有其他值都被忽略。
的WSDL reportData定义为:
<xsd:complexType name="reportData">
<xsd:all>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="url" type="xsd:string"/>
<xsd:element name="year" type="xsd:int"/>
<xsd:element name="month" type="xsd:int"/>
<xsd:element name="day" type="xsd:int"/>
<xsd:element name="hour" type="xsd:int"/>
<xsd:element name="counts" type="tns:reportCountList"/>
<xsd:element name="breakdown_total" type="tns:reportCountList"/>
<xsd:element name="breakdown" type="tns:reportDataList"/>
</xsd:all>
</xsd:complexType>
任何想法,为什么这个XML将无法正常解序列化?
也许是因为'url'节点丢失了?只是一个猜测。我的XML很生疏。 – 2011-03-09 00:22:29
啊......我想你可能就在那里。根据http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#element-all minOccurs默认为1,这意味着它需要在WSDL中显式设置为minOccurs = 0。让我试试这个。谢谢。 – 2011-03-10 20:59:09
不用担心。让我知道如果事实证明是这样,我会将其添加为正式答案,以便在其他情况下遇到类似问题时可以接受它。 – 2011-03-10 21:26:10