【C#】xmlを操作

プログラムの設定を保存するときとか,何らかのデータを読み込みたいときとか,xml形式のファイルを使用する機会は多々あるかと思います,

そんなわけで,C#でxmlファイルを簡単に使用する方法を紹介したいと思います.

調べてみるといろいろな方法があるみたいですが,今回はその中でもLINQを使用する方法を紹介しようと思います.

LINQとは

そもそもLINQって何でしょうか??

実を言うと僕も詳しくは知らないので調べてみたところ,公式にはこんな説明らしいです.

統合言語クエリ (LINQ: Language-Integrated Query) は、クエリ機能を C# 言語 (および Visual Basic や場合によってその他の .NET 言語) に直接統合する一連の技術の名前です。 LINQ を使用すると、クエリは、クラス、メソッド、イベントなどと同じように、高度な機能を備えた言語構成要素になります。

クエリを記述する開発者の場合、LINQ で最も違いを認識できる “統合言語” 部分はクエリ式です。 クエリ式は、C# 3.0 で導入された宣言クエリ構文で記述します。 クエリ構文を使用すると、データ ソースに対する複雑なフィルター処理、順序付け、およびグループ化の操作を最小限のコードで実行できます。 同じ基本的なクエリ式のパターンを使用して、SQL データベース、ADO.NET データセット、XML ドキュメントとストリーム、および .NET コレクション内のデータを照会および変換します。

なるほどわからん.日本語で説明してくれ

とりあえず,なんか知らんけど便利な機能らしい.

xmlファイルを読み込んでみる

xmlの形式

今回のサンプルでは,こんな感じのデータを使ってみたいと思う.

必要なusing

とりあえず必要なusingはこれ

xmlファイルを開く

まずは,xmlファイルを開くところから始めましょう.

ファイルパスの指定は,絶対パスでも相対パスでもどちらでも大丈夫なはずです.

要素を取得してみる

要素を取得するには,以下のようにします.

この例では,タグがmemberのものをitemとして抽出して,最終的にそれをそのままelementsに格納しています.

ここからさらに以下のようにしてあげることで,xmlの内容を出力することができます.

データにアクセスするにはValueメンバを参照してあげれば良いわけですね.Valueを参照しない場合には変数にタグ名も一緒に文字として格納されています.

これらを踏まえると,例えばnameタグのデータのみを抽出するには次のようにすれば良いわけですね.

こうするとどうでしょう??

itemに抽出されるのは,memberタグに含まれる,name要素で,そこからさらにValueを参照しています.つまりnameタグの内容が全て取得することができるわけです.

条件付きでデータを抽出してみる

さて,ここまできたらSQLに似たものを感じてる人もいるのではないでしょうか?

そうです,Where句を使用して条件付き抽出も可能なんです.例えば,年齢を抽出条件とすると次のようになります.

こうすると,年齢が22歳に限り抽出することができると言うわけですね.

既存データを更新してみる

次は,xmlファイルの内容を更新してみましょう.

まずは,既存データの更新です.これは,インスタンスに対して変更を加えたものを保存するだけです.具体例を見てみましょう.

たったこれだけでxmlファイルを更新することが可能です.

抽出するときに使用しているSingle()と言うメソッドは,条件指定の結果がただ一つに絞られるときに使用することができます.複数のデータが該当する際にはエラーになってしまうので注意してください.

新規データを追加してみる

次に,新たにデータを作成してデータを追加する方法です.

とまぁこんな感じでデータを定義して追加・保存してあげるだけですね.

全てのデータをmemberタグで囲ってあげたいのでこんな感じのデータ構造をしています.

いかがでしょうか?結構簡単にxmlファイルが操作できると思いませんか?

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です