XML の整形と圧縮

XML を貼り付けてインデントするか、タグ間の空白を削除して圧縮します。属性、コメント、CDATA セクション、宣言はそのまま返り、タグのエラーは行と列で報告されます。

ブラウザ内でローカルに実行

整形と圧縮でデータは変わりません

フォーマッターが行うのはタグ間の空白の追加・削除だけです。属性値、コメント、CDATA セクション、宣言、DOCTYPE、処理命令はバイト単位でそのまま返ります。圧縮してもコメントは残り、xml:space="preserve" が付いた部分はどちらのボタンでも変更しません。

XML を整形・圧縮する手順

貼り付けた XML を読みやすくインデントするか、タグ間の空白を削除して 1 行にまとめます。整形は入力を一度走査して組み立て直し、属性、コメント、CDATA セクション、XML 宣言、DOCTYPE、処理命令はそのまま書き戻します。

処理はこのタブ内で完結するため、何もアップロードされず、オフラインでも動作します。確認するのはタグの入れ子構造で、DTD や XML Schema に対する妥当性検証ではありません。

  1. 上の欄に XML を貼り付けます。元のインデントや改行は関係なく、構造から整形し直します。
  2. 「XML を整形」で 1 階層を 4 スペースでインデントし、「XML を圧縮」でタグ間の空白を削除してできるだけ少ない行数にまとめます。
  3. ボタンの下のメッセージを確認します。対応の取れない終了タグ、閉じられていないタグ、2 つ目のルート要素、ルート外のテキスト、テキストや属性値中の裸の「<」、引用符のない属性値、閉じられていないコメント・CDATA セクション・タグは、それぞれ行と列で報告されます。
  4. 「コピー」で結果を取得します。整形結果があればそれを、まだなければ入力テキストをコピーします。「クリア」は入力と結果の両方を空にします。

変わる部分とそのまま残る部分

整形で変わるもの

追加されるのはインデントだけです。1 階層につき 4 スペースで、内容がテキストだけの要素は 1 行のままです。混在コンテンツは並べ替えないため、<p>Hello <b>world</b> !</p> は空白も含めて書かれたまま返ります。

属性値、コメント、CDATA セクション、宣言、DOCTYPE、処理命令はバイト単位でそのままコピーされ、属性の順序も保たれます。唯一の例外は class=x のような引用符のない値で、XML では引用符が必須のため class="x" として書き戻し、その旨を報告します。

圧縮で削除されるもの

圧縮は各階層でマークアップ間の空白だけのテキストを削除するため、インデントされた文書は 1 行のコンパクトな形になります。テキストの内容には触れず、<a> spaced text </a> や混在コンテンツは空白を保ち、内容が空白だけの要素もそのまま残します。

コメントは圧縮しても残ります。バイト数が重要な場合はご自身で削除してください。xml:space="preserve" が付いた部分はどちらのボタンでも変更しません。

整形式でない文書の場合

問題は位置付きで報告されます。たとえば「1 行 10 列: </b> は <a> を閉じていません。」「1 行 7 列: <a> が閉じられていません。」「1 行 1 列: </x> に対応する開始タグがありません。」などです。結果はそのまま表示されるので、まずは報告された位置を修正してください。

入力に要素がまったくない場合(プレーンテキストや空白のみ)は、推測で出力せずにその旨を伝えます。表示される問題は最初の 5 件までで、残りは件数のみ示します。

サイズ、速度、制限

600 KB・20,000 要素の文書は Chrome でおよそ 0.15 秒で整形されます。20 万文字を超える出力はタブの応答性を保つため色分けせずに表示します。実用上の上限はお使いの端末のメモリです。

確認は構造のみです。DTD や XML Schema に対する検証は行わず、実体参照の解決や外部ファイルの取得も行わず、名前空間プレフィックスの宣言も報告しません。インデント幅は 4 スペース固定です。

最近使ったツール: