</>

XML整形

XMLを読みやすく整形したり、1行に圧縮したりします。閉じタグの抜けなどの構文エラーも指摘します。

・

ボタンを押すと、ここに結果が出ます

入力
0行 / 0文字
結果
0行 / 0文字

使い方とメモ

  • 整形は要素ごとに改行して段下げします。<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>

& と < はそのまま書けない

本文や属性の値に & と < をそのまま書くことはできません。&amp;・&lt; に置き換えます。XML があらかじめ知っている文字参照は &lt; &gt; &amp; &quot; &apos; の5つだけで、HTML の &nbsp; や &copy; は使えません。代わりに &#160; のような番号で書きます。

✕ <q>a=1&b=2</q>
○ <q>a=1&amp;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つです。

このツールの構文チェックについて

このツールが指摘するのは、閉じタグの対応とルート要素の数です。裸の &・&nbsp;・属性の重複は、整形が通ってしまうことがあります。整形できたのに読み込む側でエラーになるときは、上の決まりを見直してください。