XML整形ツールの使い方
- XMLを入力欄に貼り付けます。SOAPのリクエストやレスポンス、RSSフィード、サイトマップ、Mavenの
pom.xml、Androidのレイアウト、SVG、e-Taxやデジタルインボイス(Peppol)のデータなど、どんなXMLでもかまいません。貼り付けた時点でチェックと整形が行われます。 - 整形を選ぶと、要素が1行に1つずつ、スペース2つ・4つ・タブでインデントされます。圧縮(1行)を選ぶと、タグとタグのあいだの空白を取り除きます。
- 結果の横のコピーを押すか、ダウンロードでファイルとして保存します。
- XMLが整形式でなければ、問題の内容、行と列、その行の該当箇所の下に ^ の印、そして直し方を表示します。直せばすぐに整形したXMLが表示されます。
整形で変わるもの・変わらないもの
XML文書は要素の木です。整形では、子要素・コメント・処理命令をそれぞれ1行に置き、階層の深さに応じて字下げします。圧縮はその改行と字下げを取り除きます。ただしこの処理をするのは、中身がほかの要素だけでできている要素に限ります。タグのあいだの空白に意味がないのはそこだけだからです。それ以外は1文字も変えずにコピーします。
- テキストの内容:前後の空白も含めてそのままです。
<name> 花子 </name>の空白も残ります。 - 混在内容:
<note>通常<b>2日</b>で発送</note>のようにテキストとタグが混ざった要素は、書かれたとおりに残します。改行を入れるとテキストの一部になってしまうからです。 xml:space="preserve"の付いた要素とその中身すべて。- CDATAセクション、コメント、処理命令、DOCTYPE(
[ ]の内部サブセットも含む)。 - 実体参照と文字参照:
&は&のまま、日を「日」に変えることもしません。 - 属性値とその引用符、属性の順番。タグの中の空白だけは整えます。各属性の前に半角スペースを1つ、
=の前後には置かないので、<x id = "1" />は<x id="1"/>になります。
Windowsの改行(CR LF)はLFで書き出します。XMLパーサーはどれもそう読むので、意味は変わりません。
「整形式(well-formed)」とは
XMLファイルは、XML 1.0と「XMLの名前空間」の文法に従っていなければ、どのプログラムでも読み込めません。このチェッカーは、最初に見つかった規則違反を報告します。すべてを含むルート要素が1つだけあること、開始タグは同じ名前(大文字・小文字も同じ)の終了タグで正しい順に閉じること、属性値は引用符で囲み同じ属性を2回書かないこと、テキスト中の & と < は & と < にすること、DOCTYPEで宣言しない限り使える実体は定義済みの5つだけであること、dc: のような接頭辞は xmlns:dc="…" で宣言すること、<?xml … ?> の宣言があるならファイルの一番最初に置くこと、などです。例を見てみましょう。
<name>カフェ&バー 月光</name>
^
これは2行目・12文字目の「エスケープされていない &」です。店名の「&」は カフェ&バー と書く必要があります。手作業で作った商品フィードや請求データで最も多いエラーです。
整形式であることと妥当(valid)であることは別です。妥当性の検証では、どの要素や値を使えるかを定めたスキーマ(XSDやDTD)に照らして文書を調べます。このページが調べるのは文法で、スキーマではありません。
計算例:書籍カタログを整形する
入力欄のサンプルは、1行に書かれた465バイトの書籍カタログで、名前空間、コメント、混在内容、CDATAセクションを含みます。スペース2つで整形すると次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<catalog xmlns:dc="http://purl.org/dc/elements/1.1/">
<!-- 書籍2冊 -->
<book id="bk101" lang="ja">
<dc:title>はじめてのXML</dc:title>
<price currency="JPY">2420</price>
<note>通常<b>2日</b>で発送</note>
</book>
<book id="bk102" lang="ja">
<dc:title>真夜中の雨</dc:title>
<price currency="JPY">880</price>
<summary><![CDATA[建築家が<巨大企業>のゾンビと戦い & 勝つ物語。]]></summary>
</book>
</catalog>
10個の要素が4段の階層になっています。<note> 要素はテキストとタグが混ざっているので1行のまま、CDATAセクションは中の <巨大企業> と裸の & をそのまま保っています。インデントで47バイト増え、整形したものを圧縮すると465バイトに戻ります。UTF-8では日本語は1文字3バイトです。
署名付きのXMLは整形したものを送らない
SAMLの認証メッセージや一部のWebサービス、電子申請のデータには、XML署名(XMLDSig)が付いていることがあります。署名は対象の要素のテキストそのもの(タグのあいだの空白も含む)に対して計算されるため、整形したコピーは署名と一致しなくなり、受け取る側で拒否されます。署名付きのファイルは、読むためやエラーを探すために整形し、送信と保存には元のファイルを使ってください。改行を含んだまま署名されたファイルなら、圧縮も同じく危険です。
制限とヒント
- 大きなファイル:数千の要素がある200KBのXMLでも、チェックと整形は1秒もかかりません。長い結果もなめらかにスクロールできます。数十MBのファイルはテキストエディタのほうが快適です。
- 文字コード:このページは貼り付けた文字をそのまま扱い、ダウンロードはUTF-8で保存します。宣言が
encoding="Shift_JIS"やEUC-JPなら、ダウンロードしたファイルではUTF-8に書き換えてください。そのままだと、ほかのプログラムが日本語を読み違えて文字化けします。 - 全角の記号に注意:日本語入力のまま打った全角の「<」「>」「=」や引用符はタグの記号として扱われず、エラーになります。テキストの中身に全角文字を使うのは問題ありません。
- DTDの実体:DOCTYPEがある文書では、
&co;のような名前付き実体を、DTDで宣言されているか確かめずに受け付けます。 - HTMLはXMLではありません。閉じるスラッシュのない
<br>などはここではエラーになります。WebページにはHTML整形を、JSONにはJSON整形を使ってください。
XMLはお使いの端末から出ません
解析、チェック、整形はすべてブラウザの中で行われます。請求データやAPIのメッセージには、登録番号、住所、金額などが含まれることがよくありますが、どれもアップロードも記録もされません。保存もされないため、ページを再読み込みすると消えます。
よくある質問
XMLはサーバーにアップロードされますか?
いいえ。整形ツールはブラウザで動くJavaScriptなので、ファイルが端末の外に出ることはありません。ページを一度開けば、オフラインでも動きます。
整形式(well-formed)と妥当(valid)の違いは?
整形式のXMLは、どのXMLパーサーも求める文法(タグが正しく閉じて入れ子になっている、属性値が引用符で囲まれている、特殊文字がエスケープされている、ルート要素が1つ)を守っています。妥当なXMLは、それに加えて、使える要素や値を定めたスキーマ(XSDやDTD)にも合っています。このページは整形式かどうかを調べます。
「エスケープされていない &」と表示されるのはなぜですか?
XMLでは & は & や 日 のような参照の始まりです。会社名や店名、商品説明、パラメータが複数あるURLなどに出てくるただの & は、& と書く必要があります。
一部の要素が1行のままなのはなぜですか?
テキストを含む要素(タグと混ざっている場合も)は、書かれたとおりにコピーします。中に改行やスペースを入れるとテキストが変わってしまうからです。複数行に分けるのは、ほかの要素、コメント、処理命令だけを含む要素です。
整形したXMLでShift_JISの宣言はどうすればいいですか?
ダウンロードしたファイルはUTF-8なので、encoding="Shift_JIS" を encoding="UTF-8" に書き換えてください。元のシステムがShift_JISしか読めない場合は、エディタでShift_JISとして保存し直し、宣言はそのままにします。
最終更新日:2026年10月16日