XML整形ツールでできること
XML は、入れ子のタグで構造化されたデータを保存する形式です。RSS フィード、サイトマップ、SOAP API、Android のレイアウト、Maven の pom.xml、Office 文書、さまざまなデータのエクスポートで使われています。プログラムが書き出す XML は1行の長い文字列になっていることがよくあります。このツールは1行に1要素を並べ、インデントをそろえて、入れ子の構造を追いやすくします。
操作は3つです。
- 整形:XML をインデントします。
- 圧縮:タグの間の空白を取り除き、ファイルを小さくします。
- 検証:文書が整形式かどうかを確認し、最初に見つかった問題を報告します。
使い方
- 左のボックスに XML を貼り付けるか、ファイルを開く または サンプル を押します。貼り付けた XML はすぐに整形されます。
- インデント をスペース2つ、スペース4つ、タブから選びます。
- 整形、圧縮、検証 のいずれかを押します。Ctrl+Enter で最後の操作を繰り返せます。
- コピー を押すか、ダウンロード で結果を
.xmlファイルとして保存します。
整形前と整形後
1行で書かれた商品カタログです。
<?xml version="1.0" encoding="UTF-8"?><catalog><book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><price>44.95</price></book><book id="bk102"><author>Ralls, Kim</author><title>Midnight Rain</title><price>5.95</price></book></catalog>
スペース2つで 整形 した結果です。
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<price>44.95</price>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<price>5.95</price>
</book>
</catalog>
テキストの内容は、要素と同じ行に残ります。これは重要なポイントで、<price>44.95</price> の中に改行を入れると、プログラムが読み取る値が変わってしまいます。
圧縮 を押すと、整形したものが上の1行の形に戻ります。同じ入力で 検証 を押すと、整形式の XML です。ルート要素は <catalog>、要素は合計9個です。 と報告されます。
CDATA セクションは書いたとおりに残るので、<script><![CDATA[if (a < b) run();]]></script> は変更されずに出力されます。
検証で見つかるエラー
XML の整形ツールの多くは、壊れたマークアップを黙って「修復」します。たとえば、意図していない場所でタグを閉じてしまうことがあります。このツールはまず文書をチェックし、最初の問題が見つかった時点で止まります。以下は実際に表示されるメッセージです。
| 入力 | メッセージ |
|---|---|
<to>Tove</from> |
2行目、11列目:終了タグ </from> が、2行目で開いた <to> と一致しません |
Smith & Sons |
1行目、16列目:単独の "&" は & と書く必要があります |
閉じられていない <item> |
4行目、1列目:終了タグ </list> が、3行目で開いた <item> と一致しません |
<book id=101/> |
1行目、10列目:"id" の値はクォートで囲む必要があります |
| トップレベルの要素が2つ | 2行目、1列目:ルート要素は1つだけです。2つ目が見つかりました:<b> |
入力欄で表示 を押すと、問題の箇所にカーソルが移動します。
「整形式」とは
XML 文書は、基本的な構文ルールを守っているとき「整形式(well-formed)」と呼ばれます。
- すべての開始タグに対応する終了タグがあるか、
<br/>のように自己終了タグになっている。 - タグは開いたときと逆の順序で閉じられている。
- ルート要素がちょうど1つだけある。
- 属性の値はシングルクォートかダブルクォートで囲まれ、1つの要素に同じ属性が2回出てこない。
- テキスト中の
&や<は、&や<と書かれている。 <?xml ... ?>宣言がある場合は、ファイルのいちばん最初に置かれている。
のような名前付きの実体参照は、DOCTYPE で宣言されている場合にしか使えません。XML 自体が知っているのは <、>、&、'、" の5つだけだからです。
ヒントと制限事項
- 検証にスキーマは使いません。整形式であっても、アプリケーションにとって正しい要素が使われているとは限りません。
- テキスト内の空白はそのまま残ります。テキストの折り返しを変えたい場合は手作業で編集してください。
- 圧縮してもコメントは残ります。ファイルを最小にしたいときは、先にコメントを削除してください。
- すべて端末内で処理されるので、社内の設定ファイルやエクスポートデータも安心して貼り付けられます。
XMLを整形するほかの方法
xmllint:Linux や macOS では、xmllint --format file.xml でインデントしたコピーを表示し、xmllint --noout file.xml でエラーだけを報告できます。--schema を使えばスキーマに照らした検証もできます。
VS Code:XML の拡張機能(Red Hat の XML 拡張機能がよく使われています)を入れてから、「ドキュメントのフォーマット」を実行します。
Notepad++:XML Tools プラグインを入れると、Pretty Print コマンドが使えるようになります。
関連ツール
データが JSON なら JSON整形ツール を使ってください。設定ファイルには、YAML 向けに同じ役割を持つ YAML整形ツール があります。Web ページには、XML では認められない HTML のルールも理解できる HTML整形ツール をお使いください。