XML 整形 — pretty / minify 切替で読みやすく / 1 行に
XML を整形 (pretty / minify) するツール。fast-xml-parser でパースして自前の indent ロジックで Mode 切替: pretty (indent 2/4/タブ、改行入り、属性も整列) と minify (空白・改行を除去して 1 行に圧縮)。CDATA / コメント / processing instruction (`<?xml ... ?>`) / DOCTYPE 宣言 / 自己閉じタグ / 属性順を保持。XML 名前空間 (xmlns:foo) もそのまま維持。XML を JSON に変換したい場合は xml-json-convert を、HTML を整形したいなら HTML 用の別ツールを (XML パーサは HTML の `<br>` のような未閉じタグを許容しません)。すべてブラウザ内で処理。
使い方
1) モードを『整形 (pretty)』『圧縮 (minify)』から選びます。pretty は indent (2 / 4 / タブ) も指定可。 2) 入力欄に XML を貼り付けます。サンプルボタンで例も読み込めます。 3) 『実行』を押すと fast-xml-parser でパースし、選んだモードで再構築します。コメント・CDATA・XML 宣言・DOCTYPE はそのまま保持。 4) Copy で結果を取得。出力サイズも表示されます。
よくある質問
- XML と HTML の違いは? HTML も整形できますか?
- XML は厳格な閉じタグ規則を持ち、`<br/>` のように必ず閉じる必要があります。HTML は `<br>` `<img>` のような『void element』を許容しますが、本ツール (XML パーサ) では未閉じタグを invalid として弾きます。HTML を整形したい場合は HTML 専用のフォーマッタ (Prettier や js-beautify) を使ってください。XHTML (XML 準拠 HTML) なら本ツールで整形可能です。
- コメント・CDATA・XML 宣言は保持されますか?
- 保持されます。fast-xml-parser の `commentPropName` / `cdataPropName` オプションでコメント (`<!-- ... -->`) と CDATA (`<![CDATA[ ... ]]>`) を別ノードとして読み取り、再ビルド時に書き戻します。XML 宣言 (`<?xml version="1.0" ... ?>`) と DOCTYPE 宣言 (`<!DOCTYPE ...>`) は入力の冒頭から抽出して結果の冒頭に再配置します。
- 属性の順序は維持されますか?
- fast-xml-parser は属性を Object として保持するため、JavaScript の Object キー順 (= 挿入順) に従って維持されます。ほとんどのケースでは元の順序通りになりますが、属性名がたまたま整数 (`<el 1="a" 0="b"/>`) のような病的なケースでは順序が変わる可能性があります。実用上ほぼ問題なし。
- 名前空間 (xmlns) は維持されますか?
- はい。`xmlns:foo` のような名前空間宣言は通常の属性として保持され、`<foo:bar>` のような名前空間付きタグもタグ名の一部としてそのまま保持されます。SOAP / XHTML / SVG のような名前空間を多用する XML も整形可能。
- self-closing タグはどう扱われますか?
- 整形時は `<empty/>` (self-closing) として出力されます (`<empty></empty>` ではない)。`suppressEmptyNode: false` を指定しているため、空タグでも明示的に self-closing 形式で書き出されます。
- 巨大な XML を入れても動きますか?
- fast-xml-parser はストリーミングではなくメモリ上で全パースするので、ブラウザのメモリ上限 (実用上 100 MB 前後) までなら動作します。数十 MB の XML はパース 1-2 秒程度。GB 級のログ XML には不向きです (その場合はサーバーサイドの XSLT / xmlstarlet などを検討してください)。
- minify モードでも CDATA 内の改行は保持されますか?
- はい。CDATA セクション (`<![CDATA[ ... ]]>`) の中身は『パーサの整形対象外』として完全に保持されます。タグ間の空白だけを除去するので、CDATA 内の改行・空白・テキストはそのまま残ります。
- 入力データはサーバーに送信されますか?
- いいえ。fast-xml-parser (MIT) はブラウザ内で JavaScript として動作し、XML はネットワークに送信されません。
類似のツール
XML ↔ JSON 変換
XML と JSON を相互変換します。属性は `@_` プレフィックスで保持、整形 (2/4/タブ) を選択可。fast-xml-parser (MIT) でブラウザ内のみ実行、データはサーバーに送信されません。
JSON 整形・検証 — インデント / 圧縮 / エラー表示
JSON をブラウザ内で整形 (インデント指定) ・最小化・バリデーションします。エラー行・列を表示。データは一切外部に送信されません。
JSON5 整形 / JSON 変換 — コメント・末尾カンマ・無クォートキーに対応
JSON5 (コメント、末尾カンマ、シングルクォート、無クォートキーが許される拡張 JSON) をパースして、整形した JSON5 か、厳密な JSON に変換します。tsconfig.json や package.json5、コメント付き設定ファイルで便利。インデント幅 (2 / 4 / Tab) も選択可能で、行・列番号付きのパースエラー表示にも対応。すべてブラウザ内で完結し、データは外部に送信されません。
HTML エンティティ変換 — &/</> を安全に
HTML の特殊文字 (< > & " ') を実体参照 (&lt; など) に encode したり、&amp; → & のように decode したりします。Mode 切替で双方向、すべて非 ASCII 文字を 10 進数値参照に変換するオプション付き。ブログのコードサンプル貼り付け、XSS 対策のエスケープ確認、メール本文の HTML 化準備などに使えます。