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段階上に展開して確認してください。