tomai
ログイン
無料 · 開発者ツール

XMLをJSONに変換

XMLドキュメントをきれいで予測可能なJSONに変換

XML入力
JSON出力

XMLをJSONに変換するコンバーターとは?

XMLは2000年代の標準的なデータ形式であり、RSSフィード・銀行API・SOAPサービス・レガシー設定ファイルに今も残っています。モダンなJavaScript・Python・GoのコードはJSONをはるかに自然に読みます。XMLをJSONに変換するコンバーターは、予測可能なスキーマでドキュメントをシンプルなオブジェクトに変換します。各要素はオブジェクトになり、属性は"@@"プレフィックスが付くため、"id"という属性は"id"という子要素と衝突しません。テキストコンテンツは"@text"に入り、繰り返される兄弟要素は配列に折りたたまれます。

できること

  • ネストした要素をJSONオブジェクトに解析
  • 属性(@@プレフィックス)とテキスト(@text)と子要素を分離
  • 繰り返される兄弟要素を自動的に配列へ集約
  • CDATAセクション・コメント・宣言・自己終了タグを処理
  • 不一致または未終了のタグを明確なエラーで報告
  • JSONを読みやすいインデントで整形

使う場面

  • RSS/AtomフィードやSOAP型レスポンスを読む
  • XML設定をJSONベースのパイプラインへ移行
  • レガシーXML APIが実際に返すものを調査
  • XML参照データからJSONテストフィクスチャを構築

プライバシー:解析はすべてブラウザ内で行われ、貼り付けた内容がアップロードされることはありません。

このコンバーターが採用するマッピング方式

  • XML属性は@でプレフィックスされたキーに変換されます(例:price currency="EUR"{"@currency":"EUR"})。これにより、子要素のキーと衝突することを防ぎます。
  • テキストと子要素を混在させる要素では、テキスト部分が#textキーの下に格納されます。一方、純粋なテキストのみの要素は、そのまま文字列としてマッピングされます。
  • 同一レベルで繰り返される要素は配列にまとめられます。また、XML宣言、コメント、処理命令はすべて無視されます。

属性とテキストノードには規約が必要です

属性とテキストが混ざらない

属性は"@@id"形式のキーになり、テキストは"@text"に入るので、同じ名前の属性と要素が互いに上書きされることはありません。

🔒

リストはリストのまま

繰り返される兄弟要素は自動的にJSON配列に折りたたまれます。5冊の本のカタログは、上書きされた1冊ではなく5つのオブジェクトの配列になります。

🎯

実XMLに寛容

CDATA・コメント・DOCTYPE・自己終了タグはきれいに解析され、本当に不正なXMLは説明的なメッセージで失敗します。

よくある質問

属性はどのように表現されますか?

属性は"@@"プレフィックス付きのキーになります。例:<book id="5">は{"@@id":"5"}になります。これにより"id"という属性と同名の子要素の古典的な衝突を防ぎます。

繰り返される要素はどうなりますか?

同名の繰り返される兄弟要素は自動的にJSON配列にまとめられます。1回だけの出現は単一のオブジェクトのまま、複数回は配列になります。どちらも直感的に読めます。

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

いいえ。すべてブラウザ内で純粋なJavaScriptにより動作します。転送も保存もされません。

JSON出力で私の属性はどこへ行ってしまったのでしょうか?

同じオブジェクト上で要素と同レベルにある「@」で始まるキーを探してください。表示されるのが「#text」のみの場合は、その要素には属性とコンテンツの両方が存在します。属性を期待していたのに何も見つからない場合、その属性は親ノードに存在していた可能性があります — ツリーを1段階上に展開して確認してください。

関連ツール

関連ツール