我使用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>
答案 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; }