VS2010 Express for Windows Phone中没有XmlDocument和XDocument

时间:2013-01-11 20:01:50

标签: windows-phone-7 xml-parsing linq-to-xml

我使用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>

2 个答案:

答案 0 :(得分:1)

只是添加对System.Xml.Linq的引用不会这样做,您还需要引用类头中的命名空间:

using System.Xml.Linq;

然后你可以打电话给XDocument doc = XDocument.Parse(content);。但是,据我所知,您正在尝试反序列化数据,因此您可能希望将XmlSerializer类用于所有核心工作。你可以找到一些代码'ispiration'here

答案 1 :(得分:0)

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

 public List<Contact> ContactList { get; set; }