XMLフォーマッター
適切なネストとインデントでXMLを整形するか、圧縮します。CDATAセクション、コメント、山括弧を含む属性は正確に保持され、バランスの取れていないタグは報告されます。
- ファイルは端末の外に出ません
- 無料、登録不要
- 透かしなし
- 一度読み込めばオフラインでも動作します
XMLフォーマッターの使い方
- 1
XMLを貼り付け
圧縮されたフィード、設定ファイル、SOAPレスポンス —何でも構いません。
- 2
整形または圧縮
読むためにインデントするか、転送のために折りたたみます。
- 3
エラーを確認
バランスの取れていない、閉じられていないタグは明示的に名前が示されます。
正規表現ベースのXMLフォーマッターが実際に破綻する場所
正規表現の上に構築されたフォーマッター — 各`<`の前に改行を挿入し、開いたタグの継続的なカウントに応じてインデントする — は、シンプルな手書きXMLではまずまず動作しますが、実世界の文書では、それが破損したファイルを引き起こすまでは見落としやすい理由で失敗します。CDATAセクションは`<![CDATA[...]]>`と書かれ、まさにタグのように見える文字を含みうる任意テキストを含めるために特別に存在し、`<`を探す正規表現には、その中身を構造として扱うのではなく、それらのマーカーの間のすべてを無視すべきだと知る方法がありません。コメントも同じリスクを負い、属性値はさらに悪いです: `note="a > b"`のような属性は、ナイーブなスキャナーがタグの終わりと誤解しかねないリテラルの`>`文字を含み、間違った場所で黙ってタグを切り詰めてしまいます。
XMLを正しく整形するということは、スキャナーがタグのような構造を探す前に、これらの特殊な領域 — CDATAブロック、コメント、処理命令、DOCTYPE宣言、引用符で囲まれた属性値 — を認識しなければならないことを意味し、そうすることで内容がマークアップとして再解釈されるのではなく、バイト単位でそのまま引き継がれます。
ここでの検証は整形式であることを意味し、スキーマ準拠ではない
このツールは各タグが正しく閉じられ、正しくネストされているか — 文書をXML的に「整形式」にする構造的ルール — をチェックし、そのチェックが失敗したとき、具体的なバランスの取れていない、あるいは閉じられていないタグを報告します。行わないのは、DTDまたはXML Schema(XSD)に対して文書を検証することです。これはさらに、要素、属性、そしてその特定の値が特定の文書型のルールに準拠しているか — 必須の属性が存在するか、要素が正しい文脈に現れるか、値が期待される型と一致するか — をチェックすることになります。それは本当に別個で手の込んだチェックであり、追加の入力としてスキーマ文書自体を必要とし、汎用のフォーマッターがXMLだけから推測できるものではありません。
HTMLに完全に別のツールが必要な理由
厳格なXHTMLは有効なXMLであり、ここで正しく整形されますが、実世界の通常のHTMLはそうではありません。HTMLの仕様自体に組み込まれた理由からです: `<br>`や`<img>`のような空要素は決して閉じられず、終了タグを一切持ちません。いくつかのタグはブラウザが自動的に推論するオプションの終了タグを持ち、ブラウザは厳格なXML解析なら直接拒否するであろう不正なネストを許容します。厳格なXMLフォーマッターを典型的なHTMLに適用すると、完全に正常で整形式のあらゆるページでエラーが報告されます。これがまさに、HTMLがこれらのHTML固有のルールを理解する本物のHTMLパーサーを中心に構築された別のフォーマッターを持つ理由です。文書を厳格なXMLとして扱う代わりにです。
JSONの支配にもかかわらずXMLが今も重要な場所
JSONは新しいWeb APIのデフォルトの選択肢としてXMLに取って代わりましたが、インフラの多くはその変化の前に構築され、今もその上で動作しています: SOAP Webサービス、RSSとAtomのフィード、SVG画像(それ自体がXMLです)、Officeの文書形式は内部的に、そしてJSONが普及する前からある企業システムと設定形式の長い列です。これらの古いあるいはより公式なシステムのどれかと統合する誰でも、今も整形式のXMLを読み、デバッグし、生成する必要があり、これがまさに、XMLが新しいAPIのデザインでは後退した今でも、専用のXMLフォーマッターが引き続き奉仕する対象です。
よくある質問
私のXMLを検証しますか?
タグが正しく閉じられ、正しくネストされているかをチェックし、そうでない場合は問題のあるタグを名前で示します。DTDやXSDスキーマに対しては検証しません — それには実際のスキーマが必要で、別の作業です。
CDATAセクションとコメントは保持されますか?
書かれたとおり正確にです。パーサーはタグを探す前に`<![CDATA[…]]>`、コメント、処理命令、DOCTYPE宣言を認識するため、その中のマークアップが構造と混同されることは決してありません — これはまさに正規表現ベースのフォーマッターがファイルを破損させる場所です。
<や>を含む属性はどうなりますか?
処理されます。パーサーはタグを読む間引用符を追跡するため、`note="a > b"`のような属性がタグを早期に終わらせることはありません。これはシンプルなフォーマッターがよく間違えるバグです。
HTMLに使えますか?
厳格なXHTMLなら使えます。実際のHTMLには決して閉じられない`<br>`や`<img>`のような空要素に加え、オプションの終了タグがあるため、HTMLフォーマッターがそのための正しいツールです — 本物のHTMLパーサーを使っています。