XML フォーマッタ & 圧縮
フォーマットfast-xml-parser で XML を整形・圧縮。インデント・属性・自己終了タグを正規化します。純粋な XML 処理であり、フォーマット変換は行いません。
リモート URL の取得は行いません。JSON を直接貼り付けてください。
このページの内容
XML フォーマッターとは?#
XML フォーマッターは、構造を失ったドキュメント——1 行にダンプされた SOAP レスポンス、プロキシが空白を折りたたんだ RSS フィード、インデントを保持しないテキストボックスで編集された設定ファイル——を再流し込みし、要素の階層が見えるように再インデントします。逆の圧縮は、ドキュメントがトランスポートでできるだけ小さくなるよう、タグ間の空白のすべてのバイトを剥ぎ取ります。
XML の往復変換が見た目より難しいのは、< と > の素朴な検索と置換が情報を破壊するからです。要素の順序、<?xml?> 宣言、コメント、<?xml-stylesheet?> のような処理命令、属性の順序、<a></a> と <a/> の違いは、すべて意味を持ちます。このページは fast-xml-parser を順序保持モードで使い、ドキュメントを順序付きツリーに解析し、忠実に再構築します——だから整形はあなたのドキュメントの正規化されたビューであり、並べ替えられたものではありません。これも、このツールが JSON/XML コンバーターとは異なる理由です: データ形式を変えない、純粋な XML→XML の往復変換を行います。
使い方#
- 左の入力ペインに XML を貼り付けます。出発点が必要なら、プレースホルダーが最小の
<?xml?>ドキュメントを示します。あるいはサンプルをクリックします。 - ツールバーのモードボタンを選びます:
- 整形 — 解析し、インデントと改行で再構築します。空要素は自己終了形式に折りたたまれ(
<a></a>は<a/>に)、属性は保たれ、コメントと宣言は生き残ります。 - 圧縮 — 解析し、タグ間の空白も末尾の改行もない、単一のコンパクトな行として再構築します。
- 整形 — 解析し、インデントと改行で再構築します。空要素は自己終了形式に折りたたまれ(
- 整形モードでは、インデントを選びます: 2、4、タブ。
- 出力ペインで結果を読みます。ヘッダーは文字数での出力サイズを示し、コピーで取り出します。クリアは両ペインをリセットします。
入力が整形式でない——閉じていないタグ、& であるべき迷いの &——場合、ステータスバーは最善の行と列でエラーを報告するため、空白の出力を睨むのではなく問題を見つけられます。
主な特徴#
- 忠実な往復変換。 順序保持の解析は、整形/圧縮のサイクルを通じてドキュメントの順序、
<?xml?>宣言、コメント、処理命令を保ちます。 - 両モードが 1 つのパーサーを共有。 整形と圧縮は同じように解析し、ビルダーがテキストを出力する方法が違うだけです。だから圧縮が成功すれば整形も成功し、その逆も同様です。
- 自己終了の正規化。
<a></a>のような空要素は<a/>に折りたたまれ、これが標準のコンパクト形式で、diff 時の空白の違いを明らかにします。 - 値は文字列のまま。 パーサーは
parseTagValue: falseで設定されているため、trueのテキストノードは文字列"true"のままで、007も"007"のままです。戻り際に驚くような暗黙の型強制はありません。 - 大きな入力はメインスレッドを外れて処理。 1 MB を超えるドキュメントは Web Worker 経由で処理されるため、解析中もページは応答性を保ちます。より小さな入力はインラインで走ります。
- 厳格にクライアントサイド。 パーサーはページに同梱され、XML がブラウザから外に出ることはありません。
実例#
2 行に詰め込まれた小さな設定ドキュメント:
入力:
<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"></feature></config>
2 スペースで整形をクリック:
<?xml version="1.0"?>
<config>
<server host="example.com" port="443"/>
<feature name="cache"/>
<feature name="logs"/>
</config>
2 つ目立ちます。<?xml version="1.0"?> 宣言がドキュメントの先頭で往復変換を生き延びました。そして <feature name="logs"></feature> と、すでに自己終了していた <feature name="cache"/> は両方とも <feature name="logs"/> として現れます——空要素は自己終了形式に正規化されたため、同じ形の 2 つの feature が実際に同じに見えます。元の入力で圧縮をクリックするとトランスポート形式が得られます:
<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"/></config>
装飾的な空白のすべてのバイトが消えましたが、<server> の属性順序は手つかずで、宣言もまだそこにあります。
よくある質問#
このツールと JSON/XML コンバーターの違いは何ですか?#
このツールは XML 入力、XML 出力です——XML ドキュメントを整形または圧縮し、XML を返します。このサイトの JSON/XML コンバーターは 2 つの形式の間で翻訳し、XML を JSON のオブジェクトツリーに、あるいはその逆に変えます。同じ形式を、より整った形で欲しいならこのページを、実際に形式を変えたいならコンバーターを使ってください。
整形はコメントを保ちますか?#
はい。コメントは解析中に順序付きツリーに取り込まれ、ビルダーによって再出力されるため、<!-- note --> は整形でも圧縮でも生き残ります。処理命令 <?xml-stylesheet?> も保たれます。
エラー位置が概略にしかならないのはなぜですか?#
基になるパーサーはすべての失敗モードで文字位置を公開するわけではないため、一部のエラーではこのページはパーサーのメッセージから解析した最善の行と列しか報告できません。閉じタグの欠落では位置は通常正確で、より風変わりな解析失敗では行 1 に默认することがあります。エラーメッセージ自体は常に完全に示され、それは典型的には原因を見つけるのに十分です。
非常に大きな XML ファイルも扱えますか?#
はい、ブラウザのメモリ上限までは。1 MB を超える入力は Web Worker 内で解析されるため、UI はフリーズしません。数百メガバイトのドキュメントでは、解析に顕著な時間とメモリがかかります——これはブラウザツールであり、ストリーミングサーバーではありません。