このツールについて
SOAP レスポンス、サイトマップ、Maven の POM、JUnit XML レポートは、1 行のままでは読めません。このツールはまずブラウザ自身の XML パーサーで入力が整形式であることを確認し、CDATA セクション、コメント、処理命令、DOCTYPE を書かれたとおりに残すトークナイザーでインデントし直します。テキストだけを含む要素は 1 行のまま保たれるため、1 行に 1 タグ並べたような出力ではなく、手で書いたような XML になります。
使い方
- XML を貼り付けるか、注文のサンプルドキュメントを読み込みます。
- 「Format」(整形)とインデント(2 スペース、4 スペース、タブ)を選ぶか、「Minify」(圧縮)で 1 行にまとめます。
- XML が整形式でない場合は、赤いバナーに表示された行と列を修正します。
- 結果をコピーまたはダウンロードします。
整形式(well-formed)と妥当(valid)は違う
整形式の XML は構文ルールに従っています。ルート要素がちょうど 1 つ、すべてのタグが閉じられて正しく入れ子になっている、属性値がクォートで囲まれている、特殊文字がエスケープされている、という条件です。妥当な XML は整形式であることに加え、どの要素や値が許されるかを定義したスキーマ(XSD)や DTD にも準拠しています。このツールは、インデントし直す前にドキュメントを解析する必要があるため整形式かどうかをチェックします。XSD に対するチェックは別の工程です。
XML が解析できないよくある理由
- テキスト中のエスケープされていないアンパサンドや小なり記号:
&や<と書くか、テキストを CDATA セクションで囲みます。 <Order>…</order>のように大文字・小文字だけが異なるタグ:XML は大文字と小文字を区別します。- トップレベルの要素が複数ある:1 つのルート要素で囲みます。
<item id=7>のように属性値がクォートされていない。xmlns:soap="…"属性のない<soap:Envelope>のように、宣言されていない名前空間プレフィックス。- XML 宣言の前に何かがある:
<?xml version="1.0"?>は先頭の文字でなければならず、前に空白も置けません。
テスターが XML に出会う場面
SOAP やレガシーなエンタープライズ API、JUnit XML テストレポート(ほとんどの CI サーバーが読む形式)、Maven の pom.xml、サイトマップ、RSS フィード、Android のレイアウトはすべて XML です。Playwright は reporter: [['junit', { outputFile: 'results.xml' }]] で JUnit XML を出力し、そのファイルを整形するのが、CI がテストを失敗と判定した理由を確認する最も手早い方法です。
コードで XML をアサートするには、REST Assured の body(hasXPath("/order/status[text()='SHIPPED']")) のような XPath マッチャーが使えます。コマンドラインでは xmllint --format file.xml でファイルを整形でき、Python のスクリプトでは xml.dom.minidom.parseString(text).toprettyxml() で同じことができます。XPath 式を対話的に試すには、XPath・CSS セレクターテスターを使ってください。
XML整形ツール のよくある質問
整形するとデータが変わりますか?
タグ間の空白だけのテキストは削除されてインデントとして作り直され、要素内のテキストは前後の空白が除去されます。データ中心の XML なら問題ありませんが、混合コンテンツや xml:space="preserve" が意味を持つ要素では、使う前に結果を比較してください。
CDATA セクションやコメントは残りますか?
はい。CDATA 内のマークアップも含め、1 バイトも変えずにコピーされます。「Minify」(圧縮)モードでは、オプションでコメントを削除できます。