C# c语言中Linq到xml的转换#
情景:C# c语言中Linq到xml的转换#,c#,.net,xml,linq,linq-to-xml,C#,.net,Xml,Linq,Linq To Xml,情景: 在WPF窗口中填充网格视图 代码隐藏中有一个静态列表(我想从xml文件中获取) 尝试将静态列表移动到xml文件中 <customers> <customer Name="abc"/> <customer Name="def"/> </customers> 我无法从xml文件中获取客户名称到customerList。如果有人能帮助我前进,我将不胜感激。请使用customer而不是Cusomters(xml区分大小写): 您很可能需要一个列表
<customers>
<customer Name="abc"/>
<customer Name="def"/>
</customers>
我无法从xml文件中获取客户名称到customerList。如果有人能帮助我前进,我将不胜感激。请使用
customer
而不是Cusomters
(xml区分大小写):
您很可能需要一个
列表
,因此不需要投影到匿名类-查询中也有输入错误(“Cusomters”
):
或使用扩展方法语法:
var customerList = doc.Descendants("Customer")
.Select( e => e.Attribute("Name").Value)
.ToList();
“Cusomters”
拼写错误,应为“Customers”
显然,这不是您正在使用的代码,因为它甚至不编译。应该是这样的:
XDocument doc = XDocument.Load( "customers.xml" );
var customerList = (from e in doc.Descendants( "customer" )
select new
{
CustomerName = e.Attribute( "Name" ).Value
}).ToList();
你真的应该提到它不会编译的事实。或者你用手抄错了,这也帮不了我们
这里的逻辑问题是,您需要所有客户
标签,请注意末尾的s
。您确实需要查找Customer
标记,这些标记具有name
属性<代码>客户*只是顶级群体。我经常使用:
doc.root.elements("Customer")
对于像这样的小片段。-1子体按照广告(文档)的方式工作。更好地理解为什么你的代码不起作用,而不是说“哦,好吧,这种方式由于某些原因不起作用,我们将使用它来代替”。这应该得到-1。。。上帝啊你可以忽略它,它仍然是一个可行的选择。我和后代的问题不是别人的,我只是随便说说而已。。。有些人。。。嘘。。。抓紧点,这不是针对个人的,我只是觉得这不是个好答案。您声称使用
.subjects
无法可靠地工作,但您没有解释原因。那只会使初学者感到困惑。最重要的是,它展示了一种“伏都教”类型的编码风格,即“这不起作用,我们不知道为什么,就这样做吧”。在代码库中,这从来都不是一件好事。我还要补充一点,OP的问题与.subjects
的使用完全无关,它只是一个打字错误。使用.subjections
可以正常工作。我不反对这一点,但是。。使用发布的代码仍然是一个可行的选择,它会起作用,并且会得到OP想要的结果,因此-1是不合理的,可能会将其保留为0,或者如果我给出了一个完全虚假的代码片段,它将永远不会足够公平,那么就给-1,但在我看来,给一些实际有效的东西一个-1是不合理的。
var customerList = doc.Descendants("Customer")
.Select( e => e.Attribute("Name").Value)
.ToList();
XDocument doc = XDocument.Load( "customers.xml" );
var customerList = (from e in doc.Descendants( "customer" )
select new
{
CustomerName = e.Attribute( "Name" ).Value
}).ToList();
doc.root.elements("Customer")