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 可靠地完成此操作?

C# Linq to sql xml 检索父级中最接近的元素

如果 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
            };