連載.NETで簡単XML第1回 XML超入門 |
簡単なXML文書
XMLはメタ言語だといわれる。メタ言語とは言語を作る言語である。しかし、XMLはそんなに堅苦しいことを考えなくても利用可能である。XMLは、果てしなく奥行きのある技術ではあるが、間口は広く、容易に入ることができる。取りあえず、ここでは、人名を1つ記述するXML文書を作成してみよう。XML文書はシンプルなテキスト・エディタでも作成できるが、せっかくだからVS.NETで作成してみよう。
まず、VS.NETの統合開発環境から、[ファイル]→[新規作成]→[ファイル]とメニューを選ぶ。すると、作成するファイルの種類を選択するダイアログ・ボックスが出てくる。
VS.NETでXMLファイルを新規作成する |
[テンプレート]からXMLファイルを選び、[開く]ボタンを押そう。すると、新しいXML文書の編集画面となる。
新しいXML文書の編集画面 |
XML文書は基本的にはテキスト・ファイルなので、ここではプログラムのソース・コードの編集と同じような編集機能が使用できる。上の画面を見ても分かるように、何も書かないうちから<?xml version="1.0" encoding="utf-8" ?>という文字列が入力されている。あとで説明するが、これはXML宣言というものである。XML宣言は常に書かねばならないものではないが、書いた方がよいものである。VS.NETを使うと、XML宣言を手で書く手間がいらないわけである。ほかにもVS.NETにはXMLを扱う上で便利な機能がいろいろあるが、ここではそれを横に置いて、先に進もう。
それでは、簡単なXML文書の本体を自分で書いてみよう。XML宣言はXML文書の先頭になければならないので、そのあとに書き足すことになる。ここでは、
<name>山田二郎</name>
という内容を入力してみるとしよう。実際にキーボードから文字を打っていくと、「<name>」と打った時点で、「</name>」が自動的に挿入されることが分かるだろう。<name>は開始タグと呼ばれるもので、開始タグには必ず対応する終了タグ(ここでは</name>)が必要である。そのため、VS.NETが気を利かせて自動的に入れてくれるのである。そのまま「山田二郎」と打てばそれでXML文書は完成である。そのまま[ファイル]→[名前を付けてXmlFile1の保存]をメニューから選び保存しよう。
なお、ここで保存されるファイルは普通のテキスト・ファイルであって、テキスト・エディタで開いて編集できる性質のものである。しかし、気を付けなければならないのは、保存されるファイルは、デフォルトでシフトJISではなくUTF-8で表現されることである。シフトJISしか扱えないテキスト・エディタで開くと悲惨なことになる。
漢字コードをシフトJISとしてテキスト・エディタで開いた例 |
VS.NETでは、デフォルトで保存されるファイルはシフトJISではなくUTF-8であるため、文字が化けてしまっている。 |
XML文書をシフトJISとして保存するには、メニューから[ファイル]→[保存オプションの詳細設定]を選んでダイアログ・ボックスを開き、エンコードを「日本語(シフトJIS)-コードページ932」に変更してから保存すればよい。しかし、それだけでは正しいXML文書にならないので、あわせてXML宣言中の「utf-8」の文字列を、「Shift_JIS」に書き換える必要がある。「Shift」と「JIS」の区切りは“_”(アンダースコア)であり、“-”(ハイフン)ではないので注意が必要である。
|
|
XML宣言中の「utf-8」の文字列を、「Shift_JIS」に書き換えた、最初に作ったXMLファイル |
さて、ここで作成したXML文書にはどのような意味があるのだろうか。このXML文書には、1つの「要素」と呼ばれる情報単位が表記されている。ここで記述された要素の名前はnameである。要素の名前は大文字/小文字が区別されるので、nameとNameは違うものとして扱われるので注意が必要である。そして、この要素の内容は、山田二郎というテキストである。ここでは、nameという名前の要素は名前を記述するためのものであると仮定し、山田二郎という名前を記述するXML文書を書いてみたという想定である。さて、このようなXML文書があるとして、どうすれば利用できるのだろうか。このようなXML文書を読み書きするプログラムを作成する方法を解説するのが本連載の目的である。しかし、実際のコーディングは次回以降にたっぷり行うとして、ここではXML文書の書き方についての基礎知識の説明を続けよう。
定義済み実体
上記の例のXML文書では、nameという要素名は厳密に決めておく必要があり、簡単に変えられるものではない。このXML文書にアクセスするプログラムを記述する場合は、nameという名前を使って情報を引き出すためである。しかし、その内容にはいろいろな名前を書いてよい。つまり、山田二郎ではなく、山田三郎でも、山田四郎でも、川田花子でも構わないわけである。では、「スタスキー&ハッチ」と書きたいと思ったらどうだろうか。下記のように書くとどうなるのだろうか。
|
|
“&”記号を含んだ例 |
これはXML文書を処理するどんなプログラムに入力させてもエラーになる。どうしてエラーになるのかというと、“&”という記号をそのまま文字として書くことが禁止されているためである。先に結論を書けば、ここは、
スタスキー&ハッチ
と書かなくてはならない。&記号は&と記述するのがXML文書のお約束である。&という表記は定義済み実体と呼ばれるもので、一種のマーク付けである。このように書いたとしても、XML文書のアクセスするプログラムからは、ちゃんと&記号として渡されるので安心していただきたい。このような特別な表記を必要とする記号はほかにもある。
記号 | 定義済み実体の表記 |
< | < |
> | > |
' | ' |
" | " |
特別な表記が必要な記号 |
これらの表記は常に使わなければエラーになるものではない。解釈に混乱を来さない場合は普通に書いてもよい場合がある。スタスキー&ハッチの例が普通に書くことができず、定義済み実体を使わねばならない理由は、実体を参照する先頭の&記号と紛らわしいためである。
INDEX | ||
.NETで簡単XML | ||
第1回 XML超入門 | ||
1.プログラマーにとって重要度を増すXML | ||
2.簡単なXML文書 | ||
3.ネストする要素、属性、空要素、コメント、XML宣言 | ||
4.XMLにおける名前空間 | ||
「連載 :.NETで簡単XML」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|