我將盡我所能保持這篇文章簡潔明瞭。如果我需要進行大量編輯以添加代碼,我很抱歉。反序列化XML結果中沒有任何序列元素的數據
問題
我有一個類,我能夠正確序列化爲XML。該類將XML發送給返回XML響應的Web服務。 XML響應然後被反序列化爲對象以進行額外的處理。我能夠正確地反序列化我的對象,提供返回的XML是不是一個序列
我已經試過
我已經創建了我的課的樣子:
[other class declarations here to support XML response]
public class OrderInfoListResponse
{
public List<OrderInfo> OrderInfo { get; set; }
public OrderInfoListResponse()
{
OrderInfo = new List<OrderInfo>();
}
}
解串器看起來像:
using (Stream respStream = response.GetResponseStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(OrderListResponse));
orderResp = serializer.Deserialize(respStream) as OrderListResponse;
}
如果我傳入的數據看起來像像:
<ResponseBody>
<PageInfo>
<TotalCount>51</TotalCount>
<TotalPageCount>6</TotalPageCount>
<PageSize>10</PageSize>
<PageIndex>1</PageIndex>
</PageInfo>
<RequestID>4546ASDDAS54</RequestID>
<OrderInfoList>
<OrderInfo>
<SellerID>XXXX</SellerID>
<OrderNumber>111111111</OrderNumber>
<InvoiceNumber>222222</InvoiceNumber>
....
</OrderInfo>
<OrderInfoList>
我能不isses得到PageInfo數據和請求ID,但我得到的對象顯示
OrderInfoList
OrderInfo count = 0
如果我顯示的響應作爲一個字符串,我得到51層的反應。
問題
爲什麼我不能夠反序列化到訂單信息?
我已經試過
我嘗試下面的代碼,但我的數仍爲0:
using (Stream respStream = response.GetResponseStream())
{
StreamReader readerOK = new StreamReader(respStream);
string resp = @readerOK.ReadToEnd();
var myEncoder = new ASCIIEncoding();
var bytes = myEncoder.GetBytes(resp);
var memoryStream = new MemoryStream(bytes);
var xmlSerializer = new XmlSerializer(typeof(OrderListResponse));
orderResp = xmlSerializer.Deserialize(memoryStream) as OrderListResponse;
}
設置上myEncoder斷點顯示字符串RESP包含一個完整的XML響應,在orderResp之後設置一個斷點,顯示除列表對象以外的所有字段。
我已經實例化了我的orderResp對象,通過在方法開始時將其設置爲null。我還實例化了該類中包含的每個對象的實例,但都沒有結果。
如果我從類中刪除所有集合(列表,數組等),我可以反序列化XML文件中的第一個響應,後續響應不會被反序列化並被跳過。
還有其他想法嗎?任何人?
剛編輯我的答案... – 2012-08-01 15:06:54