【VB.NET】LINQを使ってXMLファイルを検索するには?

訪問して頂きありがとうございます。まさふくろーです。

この記事では、LINQを使ってXMLファイルを検索する方法をご紹介します。

LINQを使ってXMLファイルを検索する

LINQとは

  • LINQは、Language-Intergrate Queryの略で、統合言語クエリとも呼ばれます。
  • LINQを使うと、SQLデータベース、Oracleデータベース、XMLドキュメントなどを、同じクエリ言語で参照できます。
  • そのため、データベースごとの異なるクエリ言語を使う必要がありません。
  • また、LINQは、データベースだけではなく、配列や、フォームに配置したコントロールに対して利用することもできます。

LINQでXMLファイルを扱うには

  • XML形式のデータは、XElementオブジェクトとして取得し、これをLINQクエリのデータソースとします。
  • XElementオブジェクトは、XElementクラスのLoadメソッドで取得できます。
  • Loadメソッドの書式は以下になります。

XElementオブジェクト = XElement.Load(XMLファイル名)

  • XMLファイルを扱う場合のLINQクエリの書式は、以下になります。

要素を取得する場合

From 範囲変数 In XElement型の変数.Elements("親の要素名") Where 条件式

条件式の例

範囲変数.Element("子の要素名").Value = "100"(子の要素名の値が100のデータを抽出)

属性を取得する場合

From 範囲変数 In XElement型の変数.Elements("属性が設定されている要素名") Where 条件式

条件式の例

範囲変数.Attribute("属性名").Value = "001"(属性名の値が001のデータを抽出)

  • 条件式で、値の一部を検索する場合は、Like演算子と「*」(ワイルドカード)を使います。
  • Like演算子の書式は、以下になります。

前方一致の場合

Where 要素名 Like "A*" (Aから始まる値を抽出)

部分一致の場合

Where 要素名 Like "*A*" (Aを含む値を抽出)

後方一致の場合

Where 要素名 Like "*A" (Aで終わる値を抽出)

サンプルデータ

サンプルプログラム

2 「XMLファイルから社員コードが「1」から始まる社員コードと氏名を取得」ボタンクリック時に以下処理を行う。
8
XMLファイルのデータを読み込み、XElement型の変数「EmpMa」に代入
10
要素名<社員マスタ>から要素名<社員コード>の値が「1」から始まる要素を取得する
12 取得した件数分、以下処理を繰り返す。
13 要素名<社員コード>、要素名<氏名>の値を取得し、String型の変数「str」に追加していく。
16 処理が完了したら、変数「str」の値をラベルに表示する。
18 処理の実行中にエラーが発生した場合、
20 エラー内容を取得し、ラベルに表示する。

関連記事

コレクションまたは配列に対して処理を繰り返す

【VB.NET】コレクションまたは配列に対して処理を繰り返す方法

構造化例外処理

【VB.NET】構造化例外処理とは?

最後まで読んでいただき、ありがとうございました!

本のまとめ関連記事はこちら