C# Linq to Sql XML:检索最接近父元素中的元素

3

我有一些混乱的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可靠地完成这项任务?

1个回答

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

谢谢!ElementsBeforeSelf 就是我所缺少的。 - aherrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接