XML整形
XMLを読みやすく整形したり、1行に圧縮したりします。閉じタグの抜けなどの構文エラーも指摘します。
使い方とメモ
- 整形は要素ごとに改行して段下げします。
<name>x</name>のようにテキストだけの要素は1行にまとめます。圧縮は要素の間の空白と改行を取り除きます。 - 閉じタグの抜けや名前違い、ルート要素が2つあるといった構文エラーを指摘します。場所が分かるときは「3行目 12列目」のように出します。
- XML 宣言(
<?xml … ?>)、コメント、CDATA はそのまま残ります。 - 変換はブラウザの中だけで動きます。API のレスポンスや設定ファイルをそのまま貼っても、どこにも送信されません。
XML の書き方の決まり
XML は HTML と見た目が似ていますが、ずっと厳格です。ブラウザが多少の書き間違いを補ってくれる HTML と違い、XML は決まりを1つでも外すと読み込めません。整形できないときは、たいてい次のどれかです。
閉じタグが抜けている・名前が違う
開いた要素は必ず閉じます。中身のない要素は <br/> のように最後に / を付けます。HTML のつもりで <br> や <img> と書くと「<br> が閉じられていないか、閉じタグの名前が合っていません」と出ます。
✕ <item><name>マシーンくん</item> ○ <item><name>マシーンくん</name></item>
大文字と小文字は別の名前
XML は大文字と小文字を区別します。<Item> を </item> で閉じることはできません。
✕ <Item>1</item> ○ <Item>1</Item>
いちばん外側の要素は1つだけ
文書全体を包む「ルート要素」は1つでなければなりません。ログから切り出した断片などで要素が並んでいるときは、「ルート要素が2つ以上あります」と出ます。仮の要素で全体を包んでから整形してください。
✕ <item>1</item>
<item>2</item>
○ <items>
<item>1</item>
<item>2</item>
</items>& と < はそのまま書けない
本文や属性の値に & と < をそのまま書くことはできません。&・< に置き換えます。XML があらかじめ知っている文字参照は < > & " ' の5つだけで、HTML の や © は使えません。代わりに   のような番号で書きます。
✕ <q>a=1&b=2</q> ○ <q>a=1&b=2</q>
記号の多い文字列をまとめて入れたいときは、<![CDATA[ … ]]> で囲むと中身を置き換えずに書けます。このツールで整形しても CDATA の中身はそのまま残ります。
属性の値は必ず引用符で囲む
HTML では width=100 と書けますが、XML では width="100" のように引用符が必要です。同じ要素に同じ名前の属性を2回書くこともできません。
XML 宣言は先頭に
<?xml version="1.0" encoding="UTF-8"?> を書くなら、ファイルのいちばん最初に置きます。前に空行や空白があるだけでも、XML としては誤りです。コピーしたときに先頭に改行が入っていないか確かめてください。
JSON と比べたときの XML の特徴
- 属性と子要素の2通りで値を持てる:
<user id="1">と<user><id>1</id></user>は、どちらも「id が 1」を表せます。JSON に変換するときにどちらで受けるかを決める必要があります。 - 型がない:
<count>3</count>の 3 は、XML としてはただの文字列です。数値か文字列かは、読む側の約束(スキーマ)で決まります。 - コメントが書ける: JSON と違い
<!-- -->でコメントを残せます。設定ファイルに XML が使われ続けている理由の1つです。
このツールの構文チェックについて
このツールが指摘するのは、閉じタグの対応とルート要素の数です。裸の &・ ・属性の重複は、整形が通ってしまうことがあります。整形できたのに読み込む側でエラーになるときは、上の決まりを見直してください。