C#使用LINQ读取XML
我的XML: 问题: 我有一个客户类的通用列表。该类包含3个属性和另一个类帐户的通用列表。我已经能够加载客户数据(id、fname、lname),但我不知道如何从Accounts子目录树加载任何数据:( 代码给了我一个错误 System.Xml.Linq.dll中发生类型为“System.ArgumentNullException”的未处理异常-其他信息:值不能为null 我一直在尝试代码的许多变体,但我就是无法使其工作:(有人能给我一个工作代码如何加载帐户子树吗?非常感谢C#使用LINQ读取XML,c#,xml,linq,C#,Xml,Linq,我的XML: 问题: 我有一个客户类的通用列表。该类包含3个属性和另一个类帐户的通用列表。我已经能够加载客户数据(id、fname、lname),但我不知道如何从Accounts子目录树加载任何数据:( 代码给了我一个错误 System.Xml.Linq.dll中发生类型为“System.ArgumentNullException”的未处理异常-其他信息:值不能为null 我一直在尝试代码的许多变体,但我就是无法使其工作:(有人能给我一个工作代码如何加载帐户子树吗?非常感谢 private vo
private void loadCustomers()
{
customers =
(
from c in XDocument.Load("database.xml").Root.Descendants("Customer")
select
new Customer((int) c.Attribute("id"), (string) c.Element("FName"), (string) c.Element("LName"))
{
accounts =
(
from a in c.Descendants("Account")
select new Account((int) a.Attribute("id"))
{
money = (double) a.Attribute("money")
}
).ToList()
}
).ToList();
}
PS:因为您的xml中的标记名是
Acount
,所以我使用了相同的名称。您的代码对我有效。但是您在xml中键入错误-“Acount”而不是“Account”…更改您的xml谢谢我写这篇文章时很累:(是的,谢谢。我早上发现了这个问题:(似乎过多的编程和少量的睡眠不利于发现错误
private void loadCustomers()
{
customers =
(
from c in XDocument.Load("database.xml").Root.Descendants("Customer")
select
new Customer((int) c.Attribute("id"), (string) c.Element("FName"), (string) c.Element("LName"))
{
accounts =
(
from a in c.Descendants("Account")
select new Account((int) a.Attribute("id"))
{
money = (double) a.Attribute("money")
}
).ToList()
}
).ToList();
}
var xDoc = XDocument.Load("myfile.xml");
var list = xDoc.Descendants("Customer")
.Select(c => new
{
Id=c.Attribute("id").Value,
FName = c.Element("FName").Value,
LName = c.Element("LName").Value,
Accounts = c.Descendants("Acount")
.Select(a => new{
Id= a.Attribute("id").Value,
Money = a.Attribute("money").Value,
})
.ToList()
})
.ToList();