0

我似乎无法将我的 xml 字符串解析为自定义对象。这是我的代码:

    private Account parseXmlToAccount (String xml)
    {
        XDocument doc = XDocument.Parse(xml);
        Console.Out.WriteLine("a" + xml);
        List<Account> result = 
            (
                from x in doc.Root.Elements("user")
                select new Account()
                {
                    Session = (string) x.Element("session").Value,
                    User = (string) x.Element("user").Value
                }).ToList();
        Console.Out.WriteLine("b");
        return result.First();

和 Account.cs:

class Account
{
    public string Session { get; set; }
    public string User { get; set; }

    public override string ToString()
    {
        return Session + " " + User;
    }
}

和我的 xml 字符串:

<user>
  <session>7981239761293767891</session>
  <user>873948797862364</user>
</user>

和我的错误信息:

UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
at testMonoAndroidApp.LoginManager.<parseXmlToAccount>m__4 (System.Xml.Linq.XElement) <0x00044>
at System.Linq.Enumerable/<CreateSelectIterator>c__Iterator27`2<System.Xml.Linq.XElement, testMonoAndroidApp.Account>.MoveNext () <0x0015b>
at System.Collections.Generic.List`1<testMonoAndroidApp.Account>.AddEnumerable (System.Collections.Generic.IEnumerable`1<testMonoAndroidApp.Account>) <0x000ab>
at System.Collections.Generic.List`1<testMonoAndroidApp.Account>..ctor (System.Collections.Generic.IEnumerable`1<testMonoAndroidApp.Account>) <0x00093>
at System.Linq.Enumerable.ToList<testMonoAndroidApp.Account> (System.Collections.Generic.IEnumerable`1<testMonoAndroidApp.Account>) <0x0003b>
at testMonoAndroidApp.LoginManager.parseXmlToAccount (string) <0x0012f>
...
4

2 回答 2

3

你的根是user元素,所以改变:

from x in doc.Root.Elements("user")

from x in doc.Elements("user")
于 2013-02-15T08:46:36.960 回答
3
List<Account> result = (from o in doc.Elements()
             select new Account{ 
               User = o.Element("user").Value, 
               Session = o.Element("session").Value 
             }).ToList();
于 2013-02-15T09:03:45.410 回答