XML(拡張可能マークアップ言語)は JSON より古く、API の世界では JSON が主流になりましたが、決して廃れてはいません:SVG、RSS/Atom、Office 文書(.docx)、Android のレイアウト、Maven の pom.xml、SOAP はすべて XML です。読んで整える技術は今も役立ちます。
XML の構造
XML はタグで包まれた入れ子の要素でデータを表し、要素は属性を持てます:
<book id="42" lang="ja">
<title>ホビット</title>
<author>トールキン</author>
</book>
すべての開きタグには対応する閉じタグ(または自己終了 <br/>)が必要で、タグは正しく入れ子にし、属性値は引用符で囲みます。どれか一つでも誤ると文書は解析できません。
well-formed と valid ——重要な違い
似ていますが別物です:
- **整形式(well-formed)**は、上記の構文規則に従っていること——タグ・入れ子・引用符が正しいこと。どの XML パーサーでも確認できます。
- 妥当(valid)は、さらに特定のスキーマ(DTD や XSD)に一致すること。どの要素・属性が許されるかを定義するもので、確認にはスキーマが要ります。
多くのオンラインツール——当ツールも含め——は XML が「整形式」かを確認します。これで日常のエラー(閉じ忘れタグ、余分な &)を捕らえられ、それが実際に解析を壊す原因です。
XML と JSON:どちらを使うか
- JSON は軽量で、Web API やプログラムが読む設定の既定です。
- XML は、属性・混在内容(テキストと要素の共存)・名前空間・コメントが必要な場合や、あるエコシステムが既に標準化している場合(SVG・RSS・Office 形式)に向きます。
競合というより、目的の違うツールです。
XML・JSON・HTML の比較
| 観点 | XML | JSON | HTML |
|---|---|---|---|
| 目的 | データの保存/転送 | データの保存/転送 | 文書の表示 |
| タグ | 自由に命名 | タグなし(波かっこ) | 固定セット(<p>・<div>) |
| 属性 | あり | なし(キーのみ) | あり |
| 厳密さ | 整形式が必須 | 厳密 | 寛容、ブラウザが誤りを許容 |
| コメント | <!-- --> | なし | <!-- --> |
XML と HTML が似ているのは、どちらも SGML を祖先に持つからです。ただし XML は独自のタグを作れて構文が厳格、HTML は語彙が固定でブラウザが雑なマークアップを許します。XHTML は HTML に XML の規則を守らせようとした試みでした。
実例:RSS
RSS フィードは、取り決めたタグ名を使った XML にすぎません:
<rss version="2.0">
<channel>
<title>私のブログ</title>
<item>
<title>最初の投稿</title>
<link>https://example.com/first</link>
</item>
</channel>
</rss>
SVG 画像も同じ仕組みで、<svg> 文書はテキストエディタで開いて手で編集できる XML です。
よくある落とし穴
- 特殊文字はエスケープを。 テキスト内で実体参照が必要な文字は 5 つ:
<(<)、>(>)、&(&)、"(")、'(')。エスケープしない&は、フィードが壊れる最も多い原因です。 - XML は大文字小文字を区別する。
<Title>と<title>は別要素で、閉じタグは完全に一致させます。 - ルート要素は 1 つだけ。 整形式の文書は、最上位に全体を包む要素がちょうど 1 つだけあります。
SVG は XML なので、ベクター画像を手で編集するときも同じ整え方が使えます——PNG から SVG の解説もどうぞ。
ブラウザ内で整形・検証
XML 整形ツールは乱れた XML を読みやすいインデント構造に整形し、1 行に圧縮し直し、構文エラーを示します——すべて端末上なので、機微な設定ファイルも外に出ません。
関連ツール
- JSON を扱う?JSON 整形を。
- JSON と YAML の変換?JSON ⇄ YAML をどうぞ。