我目前正在使用Flex中的WSDL,即在由.NET提供服務的後端。所有的操作似乎都很好,除了一個,其結果對象由於某種奇怪原因沒有被AS3正確解析。我檢查了Fiddler/Charles中的響應XML,並且數據在那裏,但不在Flex變量檢查器中的結果中。罪魁禍首是子標籤'DD'(result.data.result.Tables.DD.Columns)我只看到它們中的一個,它有17個子標籤子元素,但它們被列爲數組索引0-17,其值「RID」,「NP」,「LI」等。但這些標籤沒有值。我想我沒有得到任何<DD
>標籤。Flex/AS3在一個特定操作上不完全解碼WSDL XML。我到底該如何補救?
這裏是我的結果處理:
public function getLocationStats_result(result : Object) : void
{
trace("Location Stats Received");
var locations : ArrayCollection = result.data.result.Tables.DD.Columns;
sublocationCheck();
for(var i: int =0; i < locations.length; i++)
{
//Setting up the info Dictionary, key= location name, value = LocationInfo obj.
model.pinLocations.sublocations.getItemAt(0).info[locations[i]]= new LocationInfo();
}
};
這裏是從WSDL響應的相關部分:
<GetLocationStatsResponse xmlns="http://tempuri.org/">
<GetLocationStatsResult>
<xs:schema id="Rpt_DSDashBoardFeed" targetNamespace="http://tempuri.org/Rpt_DSDashBoardFeed.xsd" xmlns:mstns="http://tempuri.org/Rpt_DSDashBoardFeed.xsd" xmlns="http://tempuri.org/Rpt_DSDashBoardFeed.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:element name="Rpt_DSDashBoardFeed" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="DD">
<xs:complexType>
<xs:sequence>
<xs:element name="RID" type="xs:decimal" minOccurs="0" />
<xs:element name="LP" type="xs:long" minOccurs="0" />
<xs:element name="NI" type="xs:long" minOccurs="0" />
<xs:element name="ENC" type="xs:long" minOccurs="0" />
<xs:element name="IMIN" type="xs:dateTime" minOccurs="0" />
<xs:element name="IMAX" type="xs:dateTime" minOccurs="0" />
<xs:element name="CC" type="xs:string" minOccurs="0" />
<xs:element name="LC" type="xs:string" minOccurs="0" />
<xs:element name="SLC" type="xs:string" minOccurs="0" />
<xs:element name="PC" type="xs:string" minOccurs="0" />
<xs:element name="CN" type="xs:string" minOccurs="0" />
<xs:element name="LN" type="xs:string" minOccurs="0" />
<xs:element name="SLN" type="xs:string" minOccurs="0" />
<xs:element name="PN" type="xs:string" minOccurs="0" />
<xs:element name="HW" type="xs:decimal" minOccurs="0" />
<xs:element name="TH" type="xs:decimal" minOccurs="0" />
<xs:element name="TE" type="xs:decimal" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<Rpt_DSDashBoardFeed xmlns="http://tempuri.org/Rpt_DSDashBoardFeed.xsd">
<DD diffgr:id="DD1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<RID>21389325</RID>
<LP>277467563</LP>
<NI>1</NI>
<ENC>1</ENC>
<IMIN>2010-02-16T09:53:54.0000000-05:00</IMIN>
<IMAX>2010-02-16T09:53:54.0000000-05:00</IMAX>
<CC>WDWPR</CC>
<LC>MK</LC>
<SLC>ENTR</SLC>
<PC>397850</PC>
<CN>Some String</CN>
<LN>Another String</LN>
<SLN>Location</SLN>
<PN>Eastman, Suzy</PN>
<HW>0</HW>
<TH>11</TH>
<TE>30</TE>
</DD>
<DD diffgr:id="DD2" msdata:rowOrder="1" diffgr:hasChanges="inserted">
<RID>21389326</RID>
<LP>277467508</LP>
<NI>8</NI>
<ENC>2</ENC>
<IMIN>2010-02-16T09:53:42.0000000-05:00</IMIN>
<IMAX>2010-02-16T09:55:16.0000000-05:00</IMAX>
<CC>WDWPR</CC>
<LC>MK</LC>
<SLC>FMAIN</SLC>
<PC>359800</PC>
<CN>Some String</CN>
<LN>Yet ANOTHER string</LN>
<SLN>Some Info</SLN>
<PN>Mays, Willie</PN>
<HW>0</HW>
<TH>11</TH>
<TE>42</TE>
</DD>
(截斷,更DD標籤追隨,加上關閉標籤。) 我所看到的只是帶有標籤名稱的初始標籤,我沒有在結果對象的調試器中看到任何實際的DD標籤或如何訪問它們。我究竟如何參考它們?我瘋狂谷歌搜索和搜索stackoverflow的答案,現在我卡住了。預先感謝任何幫助!