Linq to xml in c#
本文关键字:in xml to Linq | 更新日期: 2023-09-27 18:16:29
场景:
- 在WPF窗口中填充网格视图
- 在代码后面有一个静态列表。(我想从xml文件中获取(
正在尝试将静态列表移动到xml文件中。为此,我创建了一个ml文件,格式如下
<customers>
<customer Name="abc"/>
<customer Name="def"/>
</customers>
CodeBehind:
Xdocument doc=Xdocument.load("customers.xml");
var customerList = (from e in doc.Descendants("Cusomters")
select new
{
CustomerName = e.Attribute("Name").Value
}).ToList();
我无法将客户名称从xml文件中获取到customerList。如果有人能帮助我继续前进,我将不胜感激。
"Cusomters"
拼写错误,应为"Customers"
。
显然,这不是您正在使用的代码,因为它甚至没有编译。应该是这样的:
XDocument doc = XDocument.Load( "customers.xml" );
var customerList = (from e in doc.Descendants( "customer" )
select new
{
CustomerName = e.Attribute( "Name" ).Value
}).ToList();
你真的应该提到它不会编译的事实。或者你把它抄错了,这对我们也没有帮助。
这里的逻辑问题是,您要求所有的Customers
标签,请注意末尾的s
。您确实希望查找具有name
属性的Customer
标记。CCD_ 7只是一个顶级组。
使用customer
而不是Cusomters
(XML区分大小写(:
from e in doc.Descendants("customer")
您很可能想要一个List<string>
,这样您就不需要投影到一个匿名类——而且您的查询中也有一个拼写错误("Cusomters"
(:
var customerList = (from e in doc.Descendants("Customer")
select e.Attribute("Name").Value).ToList();
或使用扩展方法语法:
var customerList = doc.Descendants("Customer")
.Select( e => e.Attribute("Name").Value)
.ToList();
我一直使用:
doc.root.elements("Customer")
像这样的小片段。