XML→JSON変換ツールとは?

XML to JSON ConverterはXMLドキュメントを構造化されたJSONに即座に変換します。属性、ネストされた要素、テキストノード、CDATAセクション、名前空間に対応。XML APIからJSONベースシステムへの移行や、JavaScriptでのXMLデータ利用に便利です。

変換器は内部で fast-xml-parser を使っていて、実運用の XML、つまり名前空間、CDATA ブロック、混合コンテンツ、任意の深さのネストをきちんと扱います。属性は出力で @_ の接頭辞が付き、繰り返し要素は自動的に配列にまとめられ、コンパクトモードで一行出力したり、2 または 4 スペースのインデントで整形したりできます。

使い方

  1. ステップ1 — XMLコンテンツを貼り付けるか、XMLファイルをアップロードします。構造が検証され、パースエラーが即座に表示されます。
  2. ステップ2 — 変換オプションを設定します:属性を保持するか(@attr形式)、テキストのみの要素を折りたたむか、繰り返し要素を配列として保持するか。
  3. ステップ3 — 整形されたJSON出力をコピーするか、.jsonファイルとしてダウンロードします。

使用するタイミング

  • 古い SOAP や RSS フィードを、JSON を期待する JavaScript フロントエンドに合わせて近代化するとき。
  • アンケートやテスト結果の XML データを、JSON ドキュメントで保存する NoSQL データベースに取り込むとき。
  • ベンダーの XML エクスポートから設定を取り出して、YAML や JSON のパイプライン用に書き直すとき。

結果

SOAP APIから属性付きのネストされた製品要素を含むXMLレスポンスを受け取りました。貼り付けると、<product id="123"><name>Widget</name></product>が{"product":{"@id":"123","name":"Widget"}}というクリーンなJSONに変換され、フロントエンドコードですぐに使えます。

よくある質問

XML の属性は JSON 出力でどう表現されますか?
属性は子要素と区別するために @_ の接頭辞が付きます。たとえば <book id="42"><title>Hi</title></book> は {"book":{"@_id":"42","title":"Hi"}} になります。後段のコードが要素の中身だけ必要なら「属性を保持」をオフにして外せます。
XML 要素が繰り返されたとき、たとえば <item> が複数あるとどうなりますか?
繰り返し要素は自動的に JSON 配列にまとめられます。最初の出現で配列が作られ、続く兄弟は追加され、単発のものは普通のオブジェクトのままです。変換後のフィードに対して JSON 利用者が想定する慣例どおりです。
CDATA、名前空間、コメントは扱えますか?
CDATA の中身は #cdata キーの下にそのまま保存されます。名前空間は要素名の一部として保持されます(xmlns:prefix も付いたまま)。XML コメントは破棄されます。JSON 側に対応するコメント構文がないためです。
数字が数値ではなく文字列で出てくるのはなぜ?
コンバーターは既定で数字テキストを数値に、true/false テキストを真偽値に変換するので、42 は "42" ではなく 42 になります。連携先 API がすべての値を文字列で受け取りたい場合や、先頭ゼロや ID 系フィールドをそのまま残したい場合は、設定で「数値と真偽値を解析」をオフにしてください。
どれくらいのサイズの XML まで処理できますか?
完全に端末側で動くので、現実的な上限は搭載メモリです。1 ドキュメントあたり通常は数十 MB 程度。GB 級の巨大フィードはストリーミングパーサーが必要ですが、通常の API ペイロードやエクスポート、設定ファイルでは上限に当たりません。

関連ツール