我需要將我的web應用程序轉換爲電話應用程序。我成功地將請求響應反序列化到我的Web應用程序的通用列表中,但是我還沒有弄清楚如何在電話應用程序中執行此操作。在網絡上,我可以使用DataContractSerializer和XmlDictionaryRead.CreateTextReader和System.Xml.XmlDictionaryReaderQuotas(),但Windows phone上沒有這種方法。我修改了代碼,並得到這樣的解串器來自網絡的響應流失敗
Error in line 1 position 2. Expecting element 'ArrayOfQueueItem' from namespace 'http://schemas.datacontract.org/2004/07/CMSPhoneApp.DataObjects'.. //Encountered 'Element' with name 'QueueItem', namespace ''.
錯誤還有就是deserialzier
try{
using (XmlReader r = XmlReader.Create(new StringReader(content)))
{
var ser = new DataContractSerializer(typeof(T));
var reader = XmlDictionaryReader.CreateDictionaryReader(r);
ser = new DataContractSerializer(typeof(T));
var deserializedItem = (T)ser.ReadObject(reader, true);
reader.Close();
return deserializedItem;
}
}
我讀的響應流進字符串代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfQueueItem xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/DataObjects">
<QueueItem>
<callNumber>349551</callNumber>
<errorMsg
i:nil="true" />
<link>/Call/349551</link>
<page>Call</page>
<siteCity>Burnaby</siteCity>
<status>Open</status>
<summary>Mobile Application Research</summary>
</QueueItem>
<QueueItem>
<callNumber>376209</callNumber>
<errorMsg
i:nil="true" />
<link>/Call/376209</link>
<page>Call</page>
<siteCity>Burnaby</siteCity>
<status>Open</status>
<summary>July 2012 ASD Calls of the Month.</summary>
</QueueItem>
</ArrayOfQueueItem>
以下是「QueueItem」類:
namespace CMSPhoneApp.DataObjects
{
//This is Model
public class QueueItem
{
public string callNumber { get; set; }
public string summary { get; set; }
public string status { get; set; } //queInvoiceAdmin no status
public string link { get; set; }
public string errorMsg { get; set; }
public string page { get; set; }
public string siteCity { get; set; }
}
}
即使我TRID的響應流切成如下,我還是老樣子得到了同樣的錯誤:
<QueueItem>
<callNumber>349551</callNumber>
<errorMsg
i:nil="true" />
<link>/Call/349551</link>
<page>Call</page>
<siteCity>Burnaby</siteCity>
<status>Open</status>
<summary>Mobile Application Research</summary>
</QueueItem>
<QueueItem>
<callNumber>376209</callNumber>
<errorMsg
i:nil="true" />
<link>/Call/376209</link>
<page>Call</page>
<siteCity>Burnaby</siteCity>
<status>Open</status>
<summary>July 2012 ASD Calls of the Month.</summary>
</QueueItem>
會有人指導我還是告訴我的例子或鏈接來解決這個問題。提前致謝。
我生成一個沒有列表的新響應,但我仍然得到了錯誤。它看起來應用程序沒有找到類。錯誤消息:第2行位置錯誤2.期望從名稱空間'http://schemas.datacontract.org/2004/07/CMSPhoneApp.DataObjects'調用'元素'。遇到名爲'Call'的'元素',名稱空間' http://schemas.datacontract.org/2004/07/DataObjects'。我已經使用VS2010 Express for windows Phone創建了新項目「DataObjects項目」,然後將其添加爲參考。請幫助我在幾天內癱瘓。 – user819774 2012-08-15 17:24:41
另一個選擇是創建一個新項目,並將其命名爲「DataObjects」,其中包含VS 2010 Expression for Windows Phone上的所有類。 – user819774 2012-08-23 15:18:24