私はVBでLINQtoXMLを使用しています(C#での回答も素晴らしいですが)。まず、私のコードは機能するので、これは重要ではありません。ただし、条件付きロジックで行っていることは、LINQクエリ自体を使用してすでに実行可能であるはずだと思わずにはいられません。
これが私が持っているものです:
'Get the Description elements in the ResultData section where the value is "Op Code"
Dim opCodes As List(Of XElement) = (From c In xdoc.Descendants("ResultData").Descendants("Description")
Where c.Value = "Op Code"
Select c).ToList()
If opCodes.Count > 0 Then
'Get the sibling XElement of the first "Description" XElement (there should be only one) by using the parent
sOperator = Convert.ToString(((From c In opCodes
Select c).FirstOrDefault().Parent).<Value>.Value)
Else
sOperator = "Not Available"
End If
兄弟ノードを見つける私の方法にあまり批判的ではありません。XMLファイルはサードパーティのテストデバイスによって生成され、これが必要な値を取得する唯一の一般的な方法です。ここで私が本当に探しているのは、Ifブロックを処理するためのより良い方法です。
これについての考えは大歓迎です。