使用 LINQ 抓取基于具有多个节点的属性的正确节点 XML
Grabbing correct node based on attribute with multiple nodes using LINQ to XML
我在 LINQ 中编写查询以从 XML 文件中获取我需要的数据时遇到了一些问题。
XML 文件设置如下所示
<Study id ="">
<Multi>
<filepath id =""></filepath>
<filepath id ="display"></filepath>
<combined></combined>
</Multi>
</Study>
<Study id ="">
<Multi>
<filepath id =""></filepath>
<filepath id ="display"></filepath>
<combined></combined>
</Multi>
</Study>
我正在尝试获取文件路径节点的值,其中 id ="display"
var displaySettingsQuery = (from n in _XML.Descendants("Study").Descendants("Multi")
where n.Element("Multi").Attribute("id").Value == "display"
select n.Element("filepath").Value);
这似乎不起作用,因为 Element() 方法仅获取 "Multi" 的第一个实例。但是,如果我使用 Elements(),则会出现语法错误,因为 Elements 是 Ienumerable,所以我无法直接调用属性。我将如何遍历 "Multi" 集合以进行比较?
感谢您的帮助。
如果将 from
子句添加到 return <filepath>
元素而不是 <Multi>
,这会更容易,因为您只关心 <filepath>
where
和 select
子句:
var displaySettingsQuery = (from n in _XML.Descendants("Study")
.Elements("Multi")
.Elements("filepath")
where n.Attribute("id").Value == "display"
select n.Value);
我在 LINQ 中编写查询以从 XML 文件中获取我需要的数据时遇到了一些问题。
XML 文件设置如下所示
<Study id ="">
<Multi>
<filepath id =""></filepath>
<filepath id ="display"></filepath>
<combined></combined>
</Multi>
</Study>
<Study id ="">
<Multi>
<filepath id =""></filepath>
<filepath id ="display"></filepath>
<combined></combined>
</Multi>
</Study>
我正在尝试获取文件路径节点的值,其中 id ="display"
var displaySettingsQuery = (from n in _XML.Descendants("Study").Descendants("Multi")
where n.Element("Multi").Attribute("id").Value == "display"
select n.Element("filepath").Value);
这似乎不起作用,因为 Element() 方法仅获取 "Multi" 的第一个实例。但是,如果我使用 Elements(),则会出现语法错误,因为 Elements 是 Ienumerable,所以我无法直接调用属性。我将如何遍历 "Multi" 集合以进行比较?
感谢您的帮助。
如果将 from
子句添加到 return <filepath>
元素而不是 <Multi>
,这会更容易,因为您只关心 <filepath>
where
和 select
子句:
var displaySettingsQuery = (from n in _XML.Descendants("Study")
.Elements("Multi")
.Elements("filepath")
where n.Attribute("id").Value == "display"
select n.Value);