LINQ to XML如何获得root的后代然后是后代?

问题描述 投票:0回答:1

我有一个XML Schema定义如下:

<PeopleContainer>
  <People>
    <Person Name="John Doe" Age="27" CauseOfAwesome="King of All Cosmos" />
    <Person Name="Ally McBeagle" Age="7" CauseOfAwesome="Adorable" />
    <Person Name="Bender Rodriguez" Age"249" CauseOfAwesome="Bending" />  
  </People>
</PeopleContainer

我想要做的是将People标签作为IEnumerable抓取,以便我可以将它传输到我的应用程序中,但我还没有看到这个案例的选项。

我一直在尝试这样的事情:

XDocument xdoc = XDocument.Load(path);
var people = from p in xdoc.Descendants("People")
             select new
             {
               Name = p.Attribute("Name").Value,
               Age = p.Attribute("Age").Value,
               CauseOfAwesome = p.Attribute("CauseOfAwesome")
             };
foreach (var p in people)
{
   Console.WriteLine(p);
}

我想我可能会错误地实例化people ...

c# linq-to-xml
1个回答
0
投票

你忘了设置元素人:

        var people = from p in xdoc.Root.Descendants("People")
            select new
            {
                Name = p.Element("Person").Attribute("Name").Value,
                Age = p.Element("Person").Attribute("Age").Value,
                CauseOfAwesome = p.Element("Person").Attribute("CauseOfAwesome")
            };

        foreach (var n in people)
        {
            Console.WriteLine(n.Name);
            Console.WriteLine(n.Age);
            Console.WriteLine(n.CauseOfAwesome);
        }
© www.soinside.com 2019 - 2024. All rights reserved.