0

我需要将我的网络应用程序转换为电话应用程序。我成功地将请求响应反序列化到我的网络应用程序上的通用列表中,但我还没有弄清楚如何在电话应用程序上做到这一点。在网上我可以使用 DataContractSerializer 和 XmlDictionaryRead.CreateTextReader 和 System.Xml.XmlDictionaryReaderQuotas(),但在 Windows 手机上没有这样的方法。我修改了代码并得到了这样的错误

第 1 行位置 2 出错。来自命名空间“http://schemas.datacontract.org/2004/07/CMSPhoneApp.DataObjects”的预期元素“ArrayOfQueueItem”.. //遇到名称为“QueueItem”的“元素”,命名空间“” .

有反序列化的代码

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; }
   }
}

即使我尝试将响应流切割成如下所示,我仍然得到同样的错误:

<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>

有人会指导我或向我展示解决此问题的示例或链接。提前致谢。

4

1 回答 1

0

这可能不是一个好的解决方案,但它解决了我的问题。我将“schemas.datacontract.org/2004/07/DataObjects”更改为“schemas.datacontract.org/2004/07/CMSPhoneApp.DataObjects”。因此它可以找到类位置。我还需要为反序列化创建 ArrayOfQueueItem 类。

于 2012-08-15T21:52:52.670 回答