我有一个XML文件,想根据文件内容创建对象。 XML文件如下所示:
<DefaultView>
<Module>
<Variable Name="gTestInt1" Enable="True" />
<Task Name="Task1">
<Variable Name="testInt" Enable="True" />
<Variable Name="testReal" Enable="True" />
<Variable Name="testString" Enable="True" />
</Task>
<Task Name="Task2">
<Variable Name="testInt1" Enable="True" />
<Variable Name="testReal" Enable="True" />
<Variable Name="testString" Enable="True" />
</Task>
</Module>
</DefaultView>
我的LINQ语句如下:
var globalVariables = (from cfg in _xElements.Descendants("Module").Descendants("Variable")
select new Variable
{
Name = cfg.Attribute("Name").Value,
Enable = bool.Parse(cfg.Attribute("Enable").Value)
}).ToList();
所以我的问题是我获得了XML文件中的所有Variable对象,包括子节点中的那些(Task)。 但我只想要不在任何子节点中的Variable对象。只是模块节点中的那些。
我的LINQ查询必须如何才能获得此信息?
答案 0 :(得分:2)
Descendants
方法返回所有后代元素。您需要使用Elements
代替。尝试这样的事情:
var globalVariables = (from cfg in _xElements.Descendants("Module")
.Elements("Variable")
select new Variable
{
Name = cfg.Attribute("Name").Value,
Enable = bool.Parse(cfg.Attribute("Enable").Value)
}).ToList();