使い方
左の入力欄に XML を貼り付けるか、「ファイルを開く」で読み込みます(ドラッグ&ドロップも可。Shift_JIS・EUC-JP・UTF-16 のファイルも文字コードを判定して読み込みます)。
上部のモードから「検証」「整形」「圧縮(1 行化)」「ツリー表示」「XPath 検索」「JSON に変換」を選びます。結果は入力と同時に右側へ表示されます。
整形ではインデント幅、属性の改行、空要素の書き方、コメントの扱いを切り替えられます。空白をどう扱ったかは結果の下に一覧で表示されます。
エラーが出たら、表示された行・列と抜粋、「エラー位置へ移動」で該当箇所を確認して直します。入力した内容は消えません。
ツリー表示では要素や属性の XPath をワンクリックでコピーできます。XPath 検索では式を入力し、ヒット件数と一致した要素・属性・テキストを確認します。
結果は「コピー」または「ダウンロード」で保存します。保存時は UTF-8・Shift_JIS・EUC-JP・UTF-16 から文字コードを選べ、XML 宣言の encoding も合わせて書き換えます。
できること
意味を変えない整形
要素だけを含む要素の間の空白だけを整え、テキストだけの要素・テキストと要素が混ざる要素(混在内容)・xml:space="preserve" の中身のテキストと空白は 1 文字も変えません(タグの書き方は整えます)。コメント、CDATA、処理命令、DOCTYPE、引用符の種類、実体参照の書き方もそのまま残し、何をどう扱ったかを一覧で示します。整形を 2 回かけても結果は変わらず、整形→圧縮→整形でも元に戻ります。
行・列つきの分かりやすいエラー
開始・終了タグの不一致、閉じ忘れ、属性の重複、& のエスケープ漏れ、本文中の < などを、日本語で原因と直し方つきで表示します。対応する開始タグや最初の属性の位置も示し、該当箇所を選択状態にできます。
名前空間を解決して検証
宣言されていない接頭辞や、接頭辞は違っても同じ名前空間になる重複属性も検出します。ツリーと XPath 検索では、文書の宣言から作った接頭辞表を使うので、既定の名前空間の要素も d:item のように指定できます。
文字コード宣言の食い違いを検出
ファイルを読み込むときに BOM とバイト列から実際の文字コード(UTF-8・UTF-16・Shift_JIS・EUC-JP)を判定し、XML 宣言の encoding と食い違っていれば知らせます。保存時は選んだ文字コードに宣言を合わせます。
外部通信なしで安全に読む
外部 DTD や外部実体は取得せず(外部実体の宣言は XXE 対策として拒否)、実体が別の実体を参照するエンティティ展開爆弾や、短い実体を大量に展開する攻撃も拒否します。入力の大きさ・入れ子の深さ・ノード数にも上限があります。
XPath 検索と JSON 変換
XPath 1.0 で検索し(別スレッドで動き、中止・時間制限つき)、ヒット件数と各ヒットのパスを表示します(名前空間の扱いを画面で説明)。JSON 変換は規則を画面に明示し、混在内容の順序が失われる場合は件数を知らせます。
こんなときに
- API や設定ファイルの XML を読みやすく整えて、変更点を確認したい
- 「どこが閉じていないのか」「どの接頭辞が未宣言なのか」を行と列で特定したい
- RSS・SVG・AndroidManifest.xml・pom.xml・SOAP などの構造を、ツリーと XPath で調べたい
- 文字コード宣言と実際のバイト列が食い違ったファイル(Shift_JIS なのに UTF-8 宣言など)を見つけたい
- 外部から受け取った XML を、外部実体(XXE)やエンティティ展開爆弾の心配なく中身だけ確認したい
- XML の中身を JSON にして、他のツールやスクリプトに渡したい
対応形式
入力
出力
対応状況
| 機能 | 対応 | 補足 |
|---|---|---|
| 整形式(well-formed)の検証と行・列つきエラー | 対応 | — |
| 名前空間の未宣言・重複属性の検出 | 対応 | — |
| 文字コード宣言と実際のバイト列の食い違い検出 | 対応 | ファイルから読み込んだときのみ。貼り付けた文字は Unicode として扱います |
| 整形(インデント・属性の改行・空要素・コメント) | 対応 | 混在内容と xml:space="preserve" の中身は変更しません |
| 1 行への圧縮 | 対応 | 要素間の空白だけを除去 |
| ツリー表示と XPath のコピー(名前空間つき) | 対応 | — |
| XPath 1.0 による検索 | 対応 | 別スレッドで実行(8 秒で停止・中止ボタンあり)。namespace 軸・変数・id()・XPath 2.0 以降は非対応 |
| XML → JSON 変換 | 対応 | 規則を画面に明示。JSON → XML は data_converter などを利用 |
| XXE・エンティティ展開爆弾の拒否 | 対応 | 外部通信なし |
| DTD の実体の展開 | 一部対応 | 短い文字だけの実体は受け付け、参照は書かれたまま残します。入れ子・タグを含む・外部の実体は拒否 |
| DTD / XSD / RELAX NG によるスキーマ検証 | 非対応 | 整形式の確認のみです |
| XSLT による変換 | 非対応 | — |
| XML 正規化(C14N)・XML 署名 | 非対応 | — |
| XML 1.1 の独自規則・UTF-32 | 非対応 | UTF-32 のファイルは読み込めません |
| オフラインでの利用 | 対応 | 一度開いたあとは通信なしで動作 |
制限・注意事項
- 入力は 2,000 万文字(ファイルは 20 MB)まで。100 万文字を超える場合は自動実行を止め、「実行」ボタンで処理します。
- 要素の入れ子は 1000 階層、要素・テキスト・コメントなどの合計は 150 万個までです。
- XPath 検索は 8 秒を超えるか「中止」を押すと止まります。結果は先頭の 500 件を表示します。
- DOCTYPE の実体は 1 個 1 万文字・1000 個まで、展開される文字は合計 100 万文字までです。
- 整形では改行を LF にそろえます(XML の仕様上、CR LF は 1 つの改行として扱われます)。
- 子要素だけの要素の間の空白は意味を持たないものとして扱います。DTD で空白を意味のあるものにしている文書は、整形前に確認してください。
- 属性の折り返しは、開始タグが 100 桁を超えるとき(タブは 4 桁として計算)に行います。
プライバシーと安全性
入力した XML や読み込んだファイルは、お使いのブラウザの中だけで処理されます。サーバーへの送信・保存は一切行わず、外部 DTD・スキーマ・外部実体を取りに行くこともありません。トークンや個人情報を含む XML でも安心して整形できます。ページを閉じると内容は消去されます。
よくある質問
XML の「閉じタグが対応していない」エラーはどう直せばよいですか?
「&」や「<」を含む文字でエラーになります。どう書けばよいですか?
整形すると文章の空白が変わってしまうことはありますか?
XPath で既定の名前空間の要素が見つかりません。
XXE やエンティティ展開爆弾(billion laughs)は大丈夫ですか?
文字コードの宣言と実際が違うとはどういうことですか?
関連ツール
JSON 整形・検証(JSON Studio)
JSON を貼り付けるだけで整形・1 行化・構文チェック。エラーは「何行目の何が悪いか」まで表示し、コメントや末尾カンマは自動修復できます。データは端末の外へ送信しません。
YAML / TOML 検証・整形・変換(YAML / TOML Studio)
YAML・TOML・JSON を貼り付けるだけで構文チェック・整形・相互変換。エラーは行と列で示し、「no が false になる」などの型の落とし穴と、変換で失われるものを事前に警告します。データは端末の外へ送信しません。
テキスト・コード Diff
変更前と変更後を貼り付けるかファイルをドロップするだけで、追加・削除された行と、行の中で変わった単語まで色分けして表示します。結果は unified 形式のパッチとしてコピー・保存でき、入力はブラウザの外へ出ません。
UUID / ULID / NanoID / トークン生成
ページを開いた瞬間に UUID が 1 件生成済み。種類を選ぶだけで UUID v7・ULID・NanoID・ランダムトークンに切り替わり、最大 1 万件を .txt / .csv / .json で保存できます。既存の UUID や ULID を貼り付ければ、埋め込まれた時刻やバージョンも読み取れます。
正規表現テスター(Regex Tester)
パターンを入力すると、一致した箇所がテスト文字列の上で即座に色付けされます。キャプチャグループ・置換結果・パターンの意味まで一画面で確認でき、ブラウザを固まらせる危険なパターンは 1 秒で自動停止します。
コード整形・圧縮(Code Formatter)
コードを貼り付けるだけで、言語を自動判定して整形できます。インデント・1 行の幅・セミコロン・引用符・末尾カンマを選べ、JavaScript・CSS・HTML は圧縮前後のサイズと削減率も表示。入力は端末の外へ出ません。
最終更新: