【えっくすえむえる】

XML とは?

💡 データに「タグ」で意味をつけて構造化する
📌 このページのポイント
XMLフォーマット — 文書構造の規則 整形式(Well-Formed) ルート要素が1つ 開始タグと終了タグが対応 妥当(Valid) DTD/スキーマに準拠 要素・属性の型が正しい XMLフォーマットの構造 <?xml version="1.0" encoding="UTF-8"?> <root> <element attr="値">テキスト</element> </root> 宣言 → ルート要素 → 子要素(属性+テキスト)
XMLフォーマットのイメージ
ひよこ ひよこ

HTMLと何が違うの?

ペンギン先生 ペンギン先生

HTMLは「Webページを表示するため」の決められたタグセット。XMLは「データを記述するため」に自分でタグを自由に定義できる。1000のように意味のあるタグ名をつけてデータ構造を表現するんだ。HTMLは見た目、XMLはデータが主役だよ

ひよこ ひよこ

JSONとどう違うの?

ペンギン先生 ペンギン先生

XMLは冗長だけど厳密。スキーマ(XSD)で構造を定義したり、名前空間で衝突を避けたりできる。JSONは軽量でJavaScriptと相性が良い。WebのAPIJSON主流、企業間データ連携や設定ファイルはXMLが多い。AndroidのレイアウトやMavenの設定ファイル(pom.xml)も今でもXMLだよ

ひよこ ひよこ

まだXMLを学ぶ意味はある?

ペンギン先生 ペンギン先生

あるよ。SOAPベースの既存システムは大企業や金融機関に大量に残っている。SVG(画像)、XSLT(変換)、Atom/RSS(フィード)もXMLJava/.NETの設定ファイルもXMLが多い。新規開発でXMLを選ぶことは減ったけど、既存システムとの連携で避けて通れないんだよ

ひよこ ひよこ

パースするにはどうする?

ペンギン先生 ペンギン先生

DOM方式(全体をメモリに読み込む)とSAX方式(逐次読み込み)がある。小さいファイルはDOM、大きいファイルはSAX。PythonならElementTree、JavaならJAXB、JavaScriptならDOMParser。XPathを使うと特定の要素を簡潔に指定できるよ。ただしXML外部実体攻撃(XXE)には注意してパーサーの外部実体処理を無効化しようね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
XML」って出てきたら「タグでデータを構造化する記述形式」と思えればだいたいOK!
📖 おまけ:英語の意味
「Extensible Markup Language」 = 拡張可能なマークアップ言語
💬 Extensible(拡張できる)Markup Language。自分でタグを定義できるのが特徴だよ
← 用語集にもどる