C# Linq to sql xml 检索父级中最接近的元素
本文关键字:最接近 元素 检索 Linq to sql xml | 更新日期: 2023-09-27 17:56:48
我有一些不稳定的XML,我试图从中读取值。
<text>
<term>a</term>
<line>
<elm>data here</elm>
</line>
<term>b</term>
<line>
<elm>data here</elm>
</line>
<term>c</term>
<line>
<elm>data here</elm>
</line>
</text>
此时我只能访问 3 个line
元素。
当我遍历每一行时,对于第一行,我想找到恰好将"a"作为值的元素term
,因为它是"最接近"第一行子级的元素。
第二行也是如此,除了我想找到最接近的term
元素,在本例中为"b"
如何使用 LINQ 可靠地完成此操作?
如果 term
元素总是正好在line
元素之前,则可以使用
XElement.ElementsBeforeSelf().Last()
所以
var element = XElement.Load(@"previous-sibling.xml");
var termsQuery =
from line in element.Descendants("line")
select new
{
Elm = line.Descendants("elm").FirstOrDefault().Value,
Term = line.ElementsBeforeSelf().LastOrDefault().Value
};