Linq to xml in c#

本文关键字:in xml to Linq | 更新日期: 2023-09-27 18:16:29

场景:

  1. 在WPF窗口中填充网格视图
  2. 在代码后面有一个静态列表。(我想从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。如果有人能帮助我继续前进,我将不胜感激。

Linq to xml in c#

"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")

像这样的小片段。