このページのコードが起動しませんでした。

index.htmlをフォルダから直接開くと、ブラウザがJavaScriptモジュールを読み込めません。そのためファイルを選んでも何も起きません。フォルダはhttpで配信してください。

powershell -ExecutionPolicy Bypass -File serve.ps1

そのうえでhttp://localhost:8080/を開いてください。

XMLフォーマッター — 整形、圧縮、JSONへの変換

読むために整えたXML、送るために平たく圧縮したXML、そして双方向のJSON変換。そのどれも、よそのサーバーに貼り付けられることはありません。

言語: 日本語
ソースを見る
XMLとJSONはブラウザー内で処理されます。処理のためのアップロードはありません。

整形も変換も文字列に対する計算で、それをここ、このページで行います。パーサーは手書きでsrc/shared/parse-xml.jsにあり、それ以上のものはありません。この道具にはネットワーク機能そのものがなく、取りに行くものも送るものもありません。それは「XML」という語から想像されるより重い意味を持ちます。この形式で届くものは、たいてい請求書か、口座明細か、診療記録か、ヘッダーに誰かの資格情報が入ったSOAPの本文だからです。

いまの通信: 確認中…

オフライン: 確認中…

言葉を信じる必要はありません。DevToolsを開き、ネットワークタブを見ながら何かを整形してみてください。どのリクエストにも、貼り付けた内容の1文字も乗っていません。あるいはインターネットを切って、それでも整形してみてください。

1 仕事を選ぶ

仕上げ方 平たく圧縮したものは、読むためだけにあった空白をすべて取り除いた同じ文書です。

いちばん外側の要素の名前 XMLは頂点にひとつだけ要素を持ちますが、JSONは持ちません。だから、ひとつこしらえる必要があります。

2 貼り付ける

空

3 結果を持ち出す

まだ何もありません。

 

Markdownで表示

XMLをアップロードせずに整形する手順

  1. 仕事を選びます。タブは二つ、入力欄は一つです。整形はXMLを整えるか平たく圧縮し、変換はJSONに、あるいはJSONをXMLに戻します。いま整えたXMLがそのまま変換するXMLなので、二度貼り付ける必要はありません。
  2. 貼り付けるか、ファイルを置きます。選択してコピーできるものなら何でも構いません。.xml・.svg・.rss・.xsdのファイルを選択欄に置けば、ご自分のブラウザがそれを読んで欄に入れます。省くべきアップロードの段階自体がありません。
  3. インデントを選ぶか、平たく圧縮します。半角空白2つ、4つ、またはタブ。平たく圧縮したものは、読むためだけにあった空白をすべて取り除いた同じ文書で、結果には何バイト減ったかが表示されます。
  4. エラーのある場所でエラーを読みます。ここで失敗したパーサーは、ブラウザが一括で読んだ文書について言う「1行目でエラー」ではなく、どのタグが閉じられていないかを、行と列とともに伝えます。エラー位置へ移動を押すと、入力内のその位置に戻れます。入力中は、移動を指示するまでフォーカスは変わりません。
  5. 結果を持ち帰ります。コピーするか、出てきた形式の名前が付いたファイルとしてダウンロードします。

詳しい解説

XMLを整形して確認する方法 XMLをローカルで整形、圧縮、確認します。解析エラーをたどり、JSONへ変換する前に属性、テキスト、配列の対応を理解します。

よくある質問

私のXMLはどこかにアップロードされますか?

されません。このページのパーサーもプリンターも、ご自分のブラウザの中で、ご自分のハードウェア上で動く関数です。この道具にはネットワーク機能そのものがなく、何かを取りに行くことも送ることもありません。ページのContent-Security-Policyには接続してよいアドレスがすべて書かれていて、そのどれもこのサイトのものではありません。これはXMLでは、この形式の評判から想像されるより重い話です。ここに届くものは、たいてい請求書か、口座明細か、診療記録か、ヘッダーに資格情報が入ったSOAPリクエストだからです。

外部実体は解決されますか?

されませんし、切るべき設定もありません。外部実体の解決は、実行中の端末のファイルをXMLパーサーに読ませるための手口で、ふつうXXEと書かれる攻撃です。src/shared/parse-xml.jsは実体解決をまったく持たない手書きの読み取り器です。あなたのテキストがブラウザ自身のDOMParserへ渡ることもありません。DOCTYPEは、一度も実行されないまま素通りします。

XMLをJSONに変換すると何が失われますか?

混在内容の順序、コメント、そして属性と子要素の違いです。最後のものは消えるというより和らげられます。属性は名前が@で始まるメンバーになるからです。要素自身のテキストは、ほかのものと並ぶ必要があるとき#textになり、繰り返す子は配列になります。値はすべて文字列のままです。XMLに型はなく、8080が数値だったと決めるのは情報を作り出すことになります。

JSONをXMLに変換すると何が失われますか?

空のオブジェクト、空の配列、空文字列の違いです。三つとも空の要素になります。そしてすべての値の型も失われます。XMLに型がないからです。配列は繰り返す要素になり、それが読み戻せる唯一の形です。要素名にできないキーは、どのパーサーも読まない文書を吐き出す代わりに、扱いにくい文字を置き換えます。

SVGやRSSフィード、POMファイルも整形できますか?

できます。三つともXMLで、これは特定の方言ではなくXMLを読みます。こうして整えたSVGは手で編集しやすくなりますし、RSSやAtomのフィードはたいてい平たく圧縮された状態で配られていて、何かが開くまで読めません。並べ方は文書の意味を何も変えません。

インデントを付け直すとXMLの意味は変わりますか?

要素が要素を含む文書については変わりません。関わってくるのはテキストです。語を含む要素の内側の空白はそのテキストの一部なので、テキストだけを含む要素は開かずに1行のままにします。CDATAの区間は、そっくりそのまま写されます。

ブラウザ自身のXMLパーサーを使わないのはなぜですか?

文書が壊れているときに何を言うかが理由です。DOMParserが返すのはエラー文書で、その文言はブラウザごとに違い、多くは「1行目でエラー」に落ち着きます。手書きの読み取り器なら、どのタグが閉じられていないか、それがどこで開かれたかを言えます。知りたかったのはまさにそれです。外部実体を解決しないことが、もう一つの理由です。

どれくらい大きいファイルまで扱えますか?

ここに制限は設けていません。その費用を払うサーバーがないからです。実際の上限はご自分の端末です。数メガバイトのXMLなら問題なく、とても長い文書のときは、キーボードを奪い合う代わりに入力が止むのを待ってから整形し直します。

無料ですか。アカウントは必要ですか?

無料です。アカウントも、サインインも、試用期間もなく、貼り付ける量にも制限はありません。このサイトには広告があり、それが費用をまかなっています。広告にはあなたのテキストについて何も渡されません。

オフラインでも動きますか?

動きます。ページを一度読み込んだあとインターネットを切っても、そのまま使えます。これは何もアップロードされていないことを示す一番簡単な方法でもあります。整形のためにXMLを送り出す道具なら、線を抜いた瞬間に止まってしまうはずです。