複数のノードがネストされた XML ドキュメントがあります。その構造は固定されていません。ユーザーから渡された値に基づいて XML をフィルター処理したいと考えています。つまり、全 1000 ノードのうち、5 つのノードに「xyz」で始まる値が含まれている場合、それらの 5 つのノードを取得したいと考えています。
xPathで「LIKK」の種類の演算子が見つからなかったため、これを実現するためにLINQ to XMLを使用しようとしています。LINQ ではどのようなクエリを記述すればよいですか?
これまでのところ、私は以下のようなことをしていました:
dim FilterString as string = "abc"
Dim doc = New XDocument(Linq.XElement.Parse(objXML.DocumentElement.OuterXml))
Dim query = doc.Elements()
query = From e In doc.Elements()
Where e.Value.ToUpper.StartsWith(FilterString.ToUpper)
Select e
Dim sb As New StringBuilder
For Each result In query
sb.AppendLine(result)
Next
サンプル XML は次のようになります。
<root>
<node>
<p1>abcxys</p1>
<p2>anc</p2>
<c1>
<c2>abcggh</c2>
<c3>123</c3>
</c1>
</node>
</root>
結果として root/node/p1 と root/node/c1/c2 が必要です。これどうやってするの?