XMLの圧縮 — 空白の除去とファイルサイズの削減

不要な空白、改行、インデントを除去してXMLを圧縮します。圧縮が安全な場合、ファイルサイズがどの程度削減されるか、保持すべきコンテンツについて解説します。

Basic Formatting

詳細な説明

XMLの圧縮(Minification)

XML圧縮は、XMLドキュメントから不要な空白をすべて除去し、可能な限り小さなファイルを生成するプロセスです。インデント、改行、タグ間の実際のコンテンツに含まれないスペースが除去されます。

圧縮前後の比較

フォーマット済みXML:

<catalog>
  <book id="1">
    <title>XML Developer's Guide</title>
    <price>44.95</price>
  </book>
  <book id="2">
    <title>Midnight Rain</title>
    <price>5.95</price>
  </book>
</catalog>

圧縮済みXML:

<catalog><book id="1"><title>XML Developer's Guide</title><price>44.95</price></book><book id="2"><title>Midnight Rain</title><price>5.95</price></book></catalog>

圧縮が安全な場合

タグ間の空白が意味を持たない場合、圧縮は安全です。つまり、フォーマット目的のみに使用され、意味論的な意味を持たない場合です。これはほとんどのデータ指向XML(設定ファイル、APIペイロード、データフィード)に当てはまります。

注意が必要な場合

  • 混合コンテンツドキュメント — テキストと子要素の両方を含む要素。空白の除去で表示出力が変わる可能性があります。
  • xml:space="preserve" — この属性は空白が重要であることを明示的に示します。正しい圧縮ツールはこのディレクティブを尊重する必要があります。
  • プリフォーマットコンテンツ — CDATAセクション内やソースコードを表す要素の内部空白は除去すべきではありません。

サイズ削減

一般的なXMLドキュメントは圧縮後に20-50%のサイズ削減が見られます。ネストが深く4スペースインデントの設定ファイルが最も恩恵を受けます。

圧縮 vs. 圧縮(Compression)

圧縮(Minification)はテキストレベルで不要な文字を除去します。圧縮(gzip、Brotli)はバイトレベルで動作し、Minificationの上に適用できます。ネットワーク転送には、両方を組み合わせることで最良の結果が得られます。

コメントの除去

積極的な圧縮パスではXMLコメント(<!-- ... -->)も除去できます。これはオプションで、コメントが重要なメタデータやドキュメントを含むかどうかに依存します。

ユースケース

XML圧縮は、ネットワーク経由でXMLを送信する際(SOAPサービス、XML API、RSS/Atomフィード)の帯域幅削減、大量のXMLデータ保存時のディスクスペース節約、パース速度が重要なパフォーマンスクリティカルなシステム向けのXMLペイロード準備に使用されます。

試してみる — XML Formatter

フルツールを開く