【C#・LINQ】LINQ to XMLを使ったXMLのデータ操作
.NET Framework 3.5より搭載されたLINQ機能は、多くのC#の開発現場で活用されるようになりました。統一的な手法でデータに問い合わせができる機能で、LINQの種類も豊富です。その中でも、XMLデータに対して処理を行うLINQ to XMLについて、この記事で確認していきたいと思います。
- プログラマー
- LINQ to XMLって積極的に利用していくべき機能なのでしょうか?
- プロジェクト
マネージャー - 確かにC#でXMLに問い合わせする方法はいくつか存在します。しかし、LINQ to XMLを活用して処理を実装することで、より簡潔にソースコードを記述することができますので、利用していくことをおすすめしますね。
LINQ to XMLでできること
.NET Frameworkが提供する統合言語クエリのひとつの機能であるLINQ to XMLは、その名のとおりXMLファイルに対して問い合わせを行うことが可能です。
LINQ to XMLを使用することで、検索条件などを指定してXMLファイルの要素からデータの抽出を行うことができますし、C#で編集したデータをXMLファイルに出力することもできます。データベースに問い合わせるのと同様の手法でXMLファイルとやり取りできることは、開発者にとってありがたい機能であるといえるでしょう。
C#でLINQ to XMLを使ってデータの抽出サンプルコード
ここでは実際に、LINQ to XMLを利用してXMLファイルへの問い合わせを行うコーディングのサンプルを紹介します。今回の開発環境には、Visual Studio Community 2017を使用します。
C#でLINQ to XMLを利用するには、System.Xml.Linqをusingする必要があります。これを忘れてしまうと、いつまでたってもコンパイルエラーになりますので注意しましょう。
XMLファイルからデータの抽出を行うので、まずは使用するXMLファイルを作成します。
1
2
3
4
5
6
7
|
<?xml version="1.0" encoding="utf-8"?>
<JAPAN>
<Tokyo>
<No>1</No>
<Ku>Sibuya</Ku>
</Tokyo>
</JAPAN>
|
次に実際にLINQ to XMLを利用して、上記で作成したテストXMLファイルの要素を抽出します。ここでは、Descendantsメソッドを利用します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
using System;
using System.Data;
using System.Linq;
using System.Xml.Linq;
using System.Windows.Forms;
namespace WindowsFormsApp14
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var XFILE = @"C:\XML_INPUT\sample.xml";
var xdoc = XDocument.Load(XFILE);
var city = (from x in xdoc.Descendants("Tokyo")
where x.Element("No").Value == "1"
select x).Single();
label1.Text = city.Element("Ku").Value;
}
}
}
|
実行画面
ボタン押下で、ラベルに「Sibuya」を表示させます。
実行結果
- プログラマー
- 「LINQ to XML」っていうくらいですから、もっと難しいかと思っていましたが、簡単にコーディングできるのですね。
- プロジェクト
マネージャー - そうですね。LINQは慣れるまで多少の時間が必要かもしれません。しかし、慣れると本当に使い勝手の良い機能です。統一的な手法でデータベースやXMLに問い合わせすることができますので、ソースも簡潔にまとめることが可能です。早めに使い方を理解することをおすすめします。
C#を使用するならLINQ機能の知識も定着させよう
XMLデータは多くの現場で利用されています。データベースを活用するまでもないデータなどはXMLで扱うこともあります。データベース、XMLにとらわれずにデータの抽出を行えるLINQ機能は、ますますこれからも活用されていくでしょうから、この機会に知識として定着させていきましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)