在LINQ XML中获得最上层后代
本文关键字:后代 LINQ XML | 更新日期: 2023-09-27 18:15:50
我理解在LINQ XElement.Descendants<type>()
中返回节点内的所有后代元素,即使它在相同类型的后代节点内。
<node1>
<node5 id="upper">
<node4>
<node5 id="lower">
</node5>
</node4>
</node5>
<node3>
<node5 id="other">
</node5>
</node3>
</node1>
在上面的例子中,XElement.Descendants
对node1
上的node5
返回所有后代"upper","lower"answers"other"。问题是,我只想要最上层的后代(node5的id为"upper"answers"other"-跳过"lower"),并跳过位于上层后代内部的那个。我无法理解如何在简单的一行代码中做到这一点。
您可以尝试跳过具有其他<node5>
祖先的<node5>
,以便只选择外部<node5>
:
var doc = XElement.Parse("....");
var result = doc.Descendants("node5").Where(o => !o.Ancestors("node5").Any());
foreach (var r in result)
{
Console.WriteLine(r.ToString());
}