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>

lineこの時点では、3 つの要素にしかアクセスできません。

各行をループするとき、最初の行ではterm、最初の行の子に「最も近い」ため、たまたま値として「a」を持つ要素を見つけたいと思います。

term2 行目も同じですが、最も近い要素 (この場合は "b")を見つけたい場合を除きます。

LINQ を使用してこれを確実に達成するにはどうすればよいですか?

4

1 に答える 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
            };
于 2013-01-30T20:25:59.950 に答える