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ペイロード準備に使用されます。