我有一个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
...
你忘了设置元素人:
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);
}