「システム開発の話でXMLって言葉をよく聞くけど、一体何なの?」
「HTMLは知ってるけど、XMLはどう違うの?」
データの受け渡しや保存をするときによく登場する「XML(エックスエムエル)」。名前は聞いたことがあっても、実際にどう書けばいいのか、どんなルールがあるのかは意外と知られていません。
この記事では、XMLの基本構文をわかりやすく解説します。読み終わるころには「XMLって意外とカンタンかも」と感じるはずです。
XMLとは?そもそもどんなものか

XMLの意味と役割
XMLは「eXtensible Markup Language(エクステンシブル・マークアップ・ランゲージ)」の略です。日本語にすると「拡張可能なマークアップ言語」と呼ばれます。
HTML(ホームページを作る言語)と同じマークアップ言語の仲間で、データの構造を決めて、さまざまなアプリやシステム間でデータをやり取りするために使われます。
HTMLとXMLの違い
特徴 | HTML | XML |
---|---|---|
目的 | ウェブページの表示 | データの構造化・交換 |
タグ | 決められたタグのみ | 自由にタグを作れる |
ルール | 比較的ゆるい | とても厳格 |
どんなときに使われる?
XMLは私たちの身の回りで、実はたくさん使われています。
よくある使用例:
- システム間でユーザー情報や商品データを受け渡す
- ソフトウェアの設定ファイル
- 業務用の電子文書(伝票や申請書データ)
- RSSフィード(ニュースサイトの更新情報)
- Microsoft Officeの文書形式(.docx、.xlsxの中身)
つまり、コンピュータ同士が「同じルールで話をするための共通言語」みたいなものです。
なぜXMLが選ばれるの?
XMLが人気の理由は以下の通りです:
- 人間にも読みやすい: テキスト形式なので中身を確認できる
- 階層構造: データの関係性がわかりやすい
- プラットフォーム非依存: どんなシステムでも読み書きできる
- 検証可能: ルールに従っているかチェックできる
XMLの基本構文をマスターしよう

XMLの最小構造
XMLは基本的に以下のように書きます。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item>データ</item>
</root>
それぞれの意味を詳しく解説
XML宣言(最初の行)
<?xml version="1.0" encoding="UTF-8"?>
- これはXML宣言です
- XMLのバージョンや文字コードを宣言します
- 必ず最初に書く必要があります
ルート要素(一番外側のタグ)
<root>...</root>
- これが「ルート要素」で、必ず1つだけ必要です
- XML文書の最上位を示します
- 名前は「root」でなくても構いません
要素(データを囲むタグ)
<item>データ</item>
- これが「要素」で、データを囲むタグです
- HTMLに似ていますが、好きな名前で作れるのが特徴です
XMLの重要なルール
XMLにはいくつか守るべき厳格なルールがあります。これを「整形式(Well-formed)」と呼びます。
タグは必ず閉じる
正しい例:
<data>テスト</data>
間違った例:
<data>テスト <!-- 閉じタグがない -->
HTMLでは<br>
や<img>
のように閉じなくても良いタグがありますが、XMLでは必ず閉じる必要があります。
入れ子は正しく
間違った例:
<a><b></a></b> <!-- タグが交差している -->
正しい例:
<a><b></b></a> <!-- 内側から順番に閉じる -->
属性はダブルクォーテーションで囲む
正しい例:
<item type="fruit">りんご</item>
間違った例:
<item type=fruit>りんご</item> <!-- クォーテーションなし -->
<item type='fruit'>りんご</item> <!-- シングルクォーテーション -->
大文字・小文字を区別する
XMLでは<Name>
と<name>
は別のタグとして扱われます。
<!-- これは間違い -->
<Name>田中太郎</name>
<!-- これが正しい -->
<name>田中太郎</name>
XMLの実例で理解を深めよう

商品データの例
では、少し複雑な例を見てみましょう。オンラインショップの商品データをXMLで表現してみます。
<?xml version="1.0" encoding="UTF-8"?>
<shop name="テックストア">
<product id="101" category="book" inStock="true">
<name>XML入門</name>
<price currency="JPY">1200</price>
<description>初心者向けのXML解説書</description>
<tags>
<tag>プログラミング</tag>
<tag>初心者向け</tag>
</tags>
</product>
<product id="102" category="gadget" inStock="false">
<name>USBメモリ</name>
<price currency="JPY">800</price>
<description>32GB の高速USBメモリ</description>
<tags>
<tag>ストレージ</tag>
<tag>PC周辺機器</tag>
</tags>
</product>
</shop>
ポイント解説
属性(アトリビュート)の活用
id
やcategory
は「属性」です- 要素に追加情報を持たせられます
- 検索やフィルタリングに便利です
階層構造の表現
<shop>
がルート要素で、その中に複数の<product>
があります- さらに
<product>
の中に<tags>
があり、その中に複数の<tag>
があります - データの種類や階層がわかりやすく整理されています
データ型の表現
inStock="true"
のようにブール値を表現currency="JPY"
で通貨単位を明示- 数値、文字列、日付など様々なデータ型を扱えます
顧客データの例
もう一つ、顧客管理システムで使われそうなXMLの例を見てみましょう。
<?xml version="1.0" encoding="UTF-8"?>
<customers>
<customer id="C001" memberType="premium">
<personalInfo>
<name>
<firstName>太郎</firstName>
<lastName>田中</lastName>
</name>
<email>taro@example.com</email>
<phone>090-1234-5678</phone>
</personalInfo>
<address>
<zipCode>100-0001</zipCode>
<prefecture>東京都</prefecture>
<city>千代田区</city>
<street>丸の内1-1-1</street>
</address>
<registrationDate>2024-01-15</registrationDate>
</customer>
</customers>
この例では、より複雑な階層構造でデータを整理しています。実際のシステムでは、このようなXMLデータを使って顧客情報を管理することがよくあります。
XMLを書くときの注意点とトラブル回避
よくあるミスと対処法
タグを閉じ忘れる
エラーが起きる例:
<product>
<name>商品名
<price>1000</price>
</product>
対処法:
- コードエディタの自動補完機能を使う
- インデント(字下げ)を整えて視覚的にチェック
- XMLバリデーターでチェック
入れ子を間違える
エラーが起きる例:
<order>
<item>
<name>商品A</name>
<quantity>2</quantity> <!-- インデントがずれている -->
</item>
</order>
対処法:
- 一貫したインデントルールを決める
- エディタのXMLフォーマット機能を使う
特殊文字のエスケープ
XMLでは、一部の文字をそのまま書くことができません。これらを「エスケープ」する必要があります。
文字 | エスケープ後 | 理由 |
---|---|---|
< | < | タグの開始と区別するため |
> | > | タグの終了と区別するため |
& | & | エスケープ文字と区別するため |
" | " | 属性値の区切りと区別するため |
' | ' | 属性値の区切りと区別するため |
使用例:
<message>
<text>価格は1000円 < 税込1100円です</text>
<note>A & B という会社</note>
</message>
文字エンコーディングの注意点
XMLファイルを保存するときは、宣言した文字エンコーディングと実際のファイルのエンコーディングを一致させる必要があります。
よくある問題:
- XML宣言では
UTF-8
と書いているのに、ファイルはShift_JIS
で保存 - 日本語が文字化けする
対処法:
- テキストエディタで保存時にエンコーディングを確認
- 迷ったら
UTF-8
を使う(国際標準)
XMLの便利なツールとエディタ

おすすめのXMLエディタ
無料ツール
- Visual Studio Code: プラグインでXML支援機能を追加可能
- Notepad++: XMLの構文ハイライト対応
- XMLSpy: 高機能なXMLエディタ(有料版もあり)
オンラインツール
- XMLValidator: ブラウザでXMLの正当性をチェック
- XML Formatter: XMLを見やすく整形
XMLバリデーション(検証)
XMLが正しく書けているかチェックすることを「バリデーション」と呼びます。
チェックポイント:
- 構文エラー(タグの閉じ忘れなど)
- スキーマ準拠(決められたルールに従っているか)
- 文字エンコーディング
JSON vs XML:どちらを選ぶべき?
最近は「JSON」という別のデータ形式もよく使われます。XMLとJSONの使い分けを理解しておきましょう。
特徴 | XML | JSON |
---|---|---|
可読性 | 高い(構造が明確) | 高い(シンプル) |
ファイルサイズ | 大きめ | 小さめ |
属性 | サポート | 非サポート |
コメント | サポート | 非サポート |
用途 | 複雑なデータ構造 | Web API、設定ファイル |
XMLが適している場面
- 複雑な階層構造のデータ
- 属性を多用するデータ
- ドキュメント型のデータ
- 厳密なバリデーションが必要な場合
JSONが適している場面
- シンプルなデータ構造
- Web APIでのデータ交換
- JavaScriptとの連携
- ファイルサイズを小さくしたい場合
よくある質問
XMLファイルの拡張子は?
一般的に.xml
を使います。ただし、用途によって異なる拡張子を使うこともあります:
.rss
: RSSフィード.svg
: ベクター画像.kml
: Google Earth用の地図データ
XMLにコメントは書ける?
はい、HTMLと同じように書けます:
<!-- これはコメントです -->
<product>
<!-- 商品名のコメント -->
<name>商品名</name>
</product>
空の要素はどう書く?
2つの方法があります:
<!-- 方法1: 開始タグと終了タグ -->
<empty></empty>
<!-- 方法2: 自己完結タグ -->
<empty />
どちらも同じ意味で、好みや規約に応じて選択できます。
まとめ:XMLをマスターして次のステップへ
XMLの基本構文は、一度理解するとパターンが決まっていてとても書きやすいです。重要なポイントをもう一度まとめてみましょう。
覚えておくべき重要ポイント
- XML宣言は必須:
<?xml version="1.0" encoding="UTF-8"?>
- ルート要素は1つだけ: 全体を囲む最上位の要素
- タグは必ず閉じる: 開始タグと終了タグをペアにする
- 属性はダブルクォーテーション:
<tag attr="value">
- 特殊文字はエスケープ:
<
→<
など
コメント