ツール
入力
結果
結果はここに表示されます。RSS や Atom のフィード、サイトマップ、SOAP サービス、Maven のビルドはいまも XML でやり取りしており、それを扱うコードの多くは JSON のほうを望んでいます。このツールは、Node エコシステムで広く使われている依存関係のないパーサー fast-xml-parser で双方向に変換します。ドキュメントは最初に検証されるため、閉じタグが欠けていれば、中途半端な結果を出す代わりにその行と列を報告します。属性はプレフィックス(既定は @_)の下に置かれるので、同じ名前の子要素と衝突することはありません。テキストは、数値や真偽値のパースを指定しない限り文字列のまま保持されます。
動作のしくみ
- RSS チャンネルの <item> のように繰り返される兄弟要素は JSON 配列になり、1 つだけならオブジェクトのままです。
- 属性とテキストの両方を持つ要素は、プレフィックス付きの属性と並んで、テキストを #text の下に持ちます。
- 型付きの値は既定でオフなので、<version>2.10</version> は数値 2.1 にならず "2.10" のままです。
- XML へ変換するときは、JSON のトップレベルのキーがちょうど 1 つである必要があり、それがルート要素になります。
データの行き先
どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。
このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。
必要なポイント
このツールは無料です。ログインもポイントも必要ありません。
よくある質問
- <item> が 1 つだとオブジェクトで、2 つだと配列になるのはなぜですか?
- 要素が繰り返され得るかどうかは XML 自体には書かれておらず、スキーマにしか書かれていないからです。<item> が 1 つしかなければ、変換ツールには配列を作る理由がありません。コードが常に配列を期待するなら、変換後に [].concat(channel.item) などで正規化してください。
- @_ プレフィックスは何を意味しますか?
- 子要素ではなく属性から来たキーであることを示す印です。<guid isPermaLink="true"> は "@_isPermaLink": "true" になります。コードですでに使っているものに合わせて @ や $ を選べます。JSON から XML への変換でも、同じプレフィックスでどのキーを属性として書き戻すかを判断します。
- 名前空間、コメント、CDATA はどうなりますか?
- 名前空間プレフィックスは名前の一部として保持されるので、atom:link は atom:link のままです。コメントは削除され、CDATA セクションは通常のテキストとして読み込まれます。XML 宣言と処理命令はデータを持たないため読み飛ばします。
- 信頼できない提供元の XML を貼り付けても安全ですか?
- はい。fast-xml-parser は外部エンティティや DTD を取得しないため、古典的な XXE 攻撃は何にも到達できません。また、変換はこのページ内で行われ、ドキュメントがどこかへ送信されることはありません。
背後にあるオープンソース
このツールは NaturalIntelligence/fast-xml-parser(MIT)の上で動作しています。同じ処理を自分のプログラムに組み込みたい場合は、そのライブラリを使ってください。
NaturalIntelligence/fast-xml-parser別の呼び方
- xml json 変換
- json xml 変換
- xml 変換 オンライン
- rss json 変換
- xml パーサー
- xml json 変換 javascript