XML 整形・検証(XML Studio)

XML を貼り付けるだけで整形・1 行化・検証。エラーは「何行目の何がどう悪いか」まで表示し、意味を変える空白(混在内容・xml:space)には手を付けません。XPath 検索と JSON 変換も同じ画面で。データは端末の外へ送信しません。

端末内で処理・アップロードなし

ファイルや入力内容はお使いの端末(ブラウザ)の中だけで処理され、サーバーへは送信されません。

入力 XML
0 文字0 行
結果
XML を入力すると、ここに結果が表示されます

使い方

  1. 左の入力欄に XML を貼り付けるか、「ファイルを開く」で読み込みます(ドラッグ&ドロップも可。Shift_JIS・EUC-JP・UTF-16 のファイルも文字コードを判定して読み込みます)。

  2. 上部のモードから「検証」「整形」「圧縮(1 行化)」「ツリー表示」「XPath 検索」「JSON に変換」を選びます。結果は入力と同時に右側へ表示されます。

  3. 整形ではインデント幅、属性の改行、空要素の書き方、コメントの扱いを切り替えられます。空白をどう扱ったかは結果の下に一覧で表示されます。

  4. エラーが出たら、表示された行・列と抜粋、「エラー位置へ移動」で該当箇所を確認して直します。入力した内容は消えません。

  5. ツリー表示では要素や属性の XPath をワンクリックでコピーできます。XPath 検索では式を入力し、ヒット件数と一致した要素・属性・テキストを確認します。

  6. 結果は「コピー」または「ダウンロード」で保存します。保存時は 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 にして、他のツールやスクリプトに渡したい

対応形式

入力

XML.xml.svg.rss / .atom.xhtml.kml / .gpx.plist.csproj / .config.wsdl / .xsd / .xslUTF-8 / UTF-16 / Shift_JIS / EUC-JP

出力

整形済み XML(2 / 4 スペース・タブ)1 行に圧縮した XMLJSON保存時の文字コード: UTF-8 / UTF-8(BOM 付き)/ Shift_JIS / EUC-JP / UTF-16 LE

対応状況

機能対応補足
整形式(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 の「閉じタグが対応していない」エラーはどう直せばよいですか?
本ツールに貼り付けると、対応していない終了タグの位置(行・列)と、そこで閉じるべきだった要素名、対応する開始タグの位置が表示されます。多くは閉じタグの書き忘れ、入れ子の順序の誤り、大文字小文字の違いが原因です。XML は大文字小文字を区別します。
「&」や「<」を含む文字でエラーになります。どう書けばよいですか?
文字としての & は &amp;、< は &lt; と書きます(> は &gt; でも書けますが必須ではありません)。AT&T は AT&amp;T です。&nbsp; や &copy; のような HTML の名前付き実体は XML では使えないので、&#160; や &#169; のような数値参照にします。
整形すると文章の空白が変わってしまうことはありますか?
本ツールは、子要素だけを含む要素の間の空白だけを整えます。テキストだけの要素、文章の途中に要素が入る混在内容(<p>一部を<b>強調</b>する</p> など)、xml:space="preserve" の中身は変更しません。どの要素を変更しなかったかは結果の下に表示されます。
XPath で既定の名前空間の要素が見つかりません。
XPath 1.0 では、接頭辞のない名前は名前空間なしの要素にしか一致しません。xmlns="…" で宣言された要素は、本ツールの接頭辞表(例: d)を使って //d:item のように指定するか、//*[local-name()="item"] と書きます。ツリーでコピーしたパスは同じ接頭辞を使うので、そのまま検索に使えます。
XXE やエンティティ展開爆弾(billion laughs)は大丈夫ですか?
外部実体(SYSTEM / PUBLIC)の宣言は拒否し、ファイルや URL を読み込むことはありません。実体が別の実体を参照する構造や、タグを含む実体、大量に展開される実体も拒否します。外部 DTD を指す DOCTYPE があっても取得しません。
文字コードの宣言と実際が違うとはどういうことですか?
例えば XML 宣言が encoding="UTF-8" なのに、ファイルの中身が Shift_JIS で保存されているような状態です。パーサーによっては読み込みに失敗したり文字化けしたりします。ファイルを開くと実際の文字コードを判定して食い違いを知らせ、保存時に宣言を合わせることができます。

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 は圧縮前後のサイズと削減率も表示。入力は端末の外へ出ません。

最終更新: