0

我使用 MS Studio 2010 Express for Windows Phone 来构建应用程序。在我的应用程序中,我得到了 http 响应并以字符串形式读取它,然后我将其反序列化到类对象中。它在没有 List 集合作为属性的类中工作正常。当它反序列化具有 List 属性的类时,它得到了这样的错误

Error in line 12 position 5. Expecting state  'Element'.. Encountered 'EndElement'  with name  'ContactList', namespace  'http://schemas.datacontract.org/2004/07/DataObjects’.

我想我可以读取 xml 并将值分配给类。我搜索阅读 xml 文件和很多网站提到使用 XDocument .Prase 方法或 xlmDocument.Load。但是添加 System.Xml.Ling 作为参考的事件,我仍然看不到 XDocument .Parse 方法或 xlmDocument 。有人会告诉我应该怎么做才能将以下值分配给班级吗?

有我的类对象:

public class CallDetails
{
    public int id { get; set; }
    public string summary { get; set; }
    public string errorMsg { get; set; }
    public int parentCallid { get; set; }
    public string parentCallURL { get; set; }
    public string assignedTo { get; set; }
    public string OrgName { get; set; }
    public DateTime onHoldSince { get; set; }
    public DateTime onHoldUntil { get; set; }
    public string requester { get; set; }
    public bool isOnHold { get; set; }
    private List<Contact> m_ContactList = new List<Contact>();

    public List<Contact> ContactList
    {
        get { return m_ContactList; }

    }
}

有回应:

<?xml version="1.0" encoding="utf-8"?><CallDetails xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/DataObjects">
<ContactList>
      <Contact>
          <Method>PriPhone</Method>
          <Number>(604) 555-1234</Number>
      </Contact>
      <Contact>
          <Method>Fax</Method>
          <Number>(604)555-1234</Number>
      </Contact>
  </ContactList>
  <errorMsg
      i:nil="true" />
  <id>0</id>
  <isOnHold>false</isOnHold>
  <onHoldSince>0001-01-01T00:00:00</onHoldSince>
  <onHoldUntil>0001-01-01T00:00:00</onHoldUntil>
  <parentCallURL>/Call/349551</parentCallURL>
  <parentCallid>0</parentCallid>
  <requester>Peter </requester>  
  <summary>Mobile Application Research</summary>
</CallDetails>
4

2 回答 2

1

只是添加引用是System.Xml.Linq不行的,还需要在类头中引用命名空间:

using System.Xml.Linq;

然后你可以调用类似的东西XDocument doc = XDocument.Parse(content);。但是,据我所知,您正在尝试反序列化数据,因此您可能希望使用XmlSerializer该类来代替所有核心工作。你可以在这里找到一些代码“灵感” 。

于 2013-01-11T20:11:23.340 回答
0

我发现 CallDetail 类导致错误。应该是这样的

 public List<Contact> ContactList { get; set; }
于 2013-01-14T18:21:51.903 回答