本文へスキップ

XML整形ツールベータ

XMLを見やすくインデントしたり、1行に圧縮したりできます。整形式(well-formed)かどうかも確認します。処理はすべてブラウザ内で完結します。

0文字 · 0行
方式

0文字 · 0行

使い方

入力欄にXMLを貼り付けると、結果が表示されます。「方式」で「整形」を選ぶとタグごとに改行してインデントし、構造が一目でわかるようになります。「圧縮」を選ぶとタグの間の改行と空白だけを取り除き、ファイルサイズを小さくします。整形を選んだ場合は、インデント幅(半角スペース2つ・4つ・タブ)も変更できます。テキストと要素が混在する混合コンテンツ(mixed content)では、「整形」はその間の空白を整えて配置し直しますが、「圧縮」は元の空白をそのまま残します。貼り付けたXMLが整形式(well-formed)でない場合は、結果の代わりにエラーが表示され、可能な場合は何行目・何列目に問題があるかも一緒に示します。

整形式(well-formed)と妥当(valid)は別の概念です

XMLを扱うときによく混同される概念です。「整形式(well-formed)」とは、タグが正しく開閉されているか、属性値が引用符で囲まれているか、ルート要素が1つだけかといった、XML自体の文法を守っているかどうかを指します。一方「妥当(valid)」とは、その文書がDTDやXSDなど特定のスキーマが定める構造(どの要素がどの順序で来るべきか、どの属性が必須かなど)に従っているかどうかを指します。このツールはブラウザ標準のパーサーで整形式かどうかだけを確認し、スキーマの検証は行いません。特定のスキーマに沿っているか確認したい場合は、そのスキーマに対応した別のツールが必要です。

コメント・CDATA・処理命令はそのまま保持されます

整形・圧縮のどちらでも、<!-- コメント -->、<![CDATA[ ... ]]> の区間、<?処理命令?> の内容は変更されません。整形するときはこれらもそれぞれ自分の行にインデントして配置し、圧縮するときは周りの改行だけを取り除いて内容はそのまま残します。<!DOCTYPE ...> 宣言や <?xml version="1.0"?> のようなXML宣言も、変更されずに出力の先頭にそのまま残ります。

XXE(外部実体参照)の心配なく貼り付けられます

サーバー側でXMLを解析する方式は、XXE(XML External Entity)攻撃を受けやすく注意が必要です。しかしこのツールはブラウザ標準のDOMParserをそのまま使っており、このAPIは文書内に書かれた外部DTDや外部実体を実際には取得(フェッチ)しないように作られています。さらに処理そのものがブラウザの中だけで完結し、サーバーには何も送信されないため、出どころのわからないXMLを貼り付けても、それだけでサーバーが攻撃を受けることはありません。

プライバシー

貼り付けたXMLはこのブラウザの中だけで処理され、どこにも保存・送信されません。ページを閉じると入力内容も消えます。

参考資料

よくある質問

このツールは整形式(well-formed)だけを確認しますか、それともスキーマ(XSD・DTD)まで検証しますか?

整形式かどうかだけを確認します。タグが正しく開閉されているか、属性値が引用符で囲まれているか、ルート要素が1つだけかといった、XML自体の文法だけをチェックします。特定のスキーマ(XSD・DTD)が定める構造に沿っているか、必須要素が抜けていないかといった「妥当性(valid)」の検証は行いません。

ブラウザでXMLを解析すると、XXE(外部実体参照)攻撃の危険はありますか?

ありません。ブラウザ標準のDOMParserは、文書内に書かれた外部DTDや外部実体を実際に取得(フェッチ)しません。さらにこのツールはサーバーに何も送信せず、すべてブラウザ内だけで処理するため、信頼できないXMLを貼り付けてもサーバー側のXXE攻撃経路はそもそも存在しません。

圧縮(minify)すると、コメントやCDATAの内容も消えますか?

消えません。圧縮はタグの間の改行とインデント(空白)を取り除くだけで、コメント・CDATAセクション・処理命令・テキスト内容はそのまま残ります。コメントも消したい場合は、別途削除する必要があります。

大きなXMLファイルでも処理できますか?

はい。ブラウザ標準のパーサーを使うため、数MB程度のXMLでも問題なく処理できます。ただし非常に大きい、または深くネストした文書では、ブラウザの性能によって一瞬止まったように感じることがあります。