XML to JSON: レガシーシステムインターフェースデータの近代化ガイド
本記事はレガシーシステムと統合する開発者向けに書かれています。XMLからJSONへの変換における標準マッピングルールと特殊なシナリオの処理を説明し、代表的な3つのビジネスシナリオを取り上げます。
2026-08-11 更新
XMLノードからJSONへの標準マッピングルール
XML要素はJSONオブジェクトに対応し、要素内のテキストノードはデフォルトで#textキーの下に保存されます。XML要素のすべての属性は、子要素と区別するためにJSONオブジェクトのキーに@_の接頭辞が付加されます。これはほとんどの変換ツールで採用されている慣習です。
同じ名前の重複した子要素は、自動的に1つのJSON配列に集約されます。子要素の出現回数が1回であってもN回であっても、出力は一貫した配列構造を維持するため、フロントエンドのビジネスロジックで型チェックを行う必要がなくなります。
3つの代表的なXMLシナリオにおける変換処理
レガシーバックエンドのSOAPインターフェースが返すエンベロープ形式のXMLの場合、Bodyノード内のコアデータが抽出されて対応するJSON構造に変換され、後続の処理のために名前空間識別子が保持されます。RSSフィードのXMLを変換した後は、entryノードが自動的に配列に集約され、フロントエンドでリストとして直接レンダリングできます。レガシープロジェクトの設定用XMLを変換すると、出力をNode.jsバックエンドサービスが直接読み込んで使用できます。
| シナリオの種類 | コア変換ロジック |
|---|---|
| SOAPインターフェース | Bodyからコアコンテンツを抽出し、エンベロープのメタデータを保持 |
| RSSフィード | itemノードを自動的に配列に集約 |
| レガシーシステム設定ファイル | 階層構造を保持し、新しいサービスから読み取り可能にする |
特殊な構造の処理: 名前空間とCDATA
XMLの名前空間接頭辞は、対応するJSONのキー名に完全に保持され、自動的に削除されることはありません。開発者はビジネス要件に応じて不要な名前空間識別子をフィルタリングできます。OKfmtのXML to JSONコンバーターはデフォルトで元の名前空間情報を保持します。
CDATAセクション内のテキストは元の内容がそのまま保持され、対応するノードの文字列値として保存され、エスケープや切り詰めは適用されません。これにより、HTMLフラグメントやスクリプトコンテンツなどの特殊テキストの構造的完全性が確保されます。
ネストの深さに対する平坦化のトレードオフ
ネイティブXMLは多層のネスト構造をサポートしており、JSONに変換した後も対応する階層が保持されるため、最新APIのネストオブジェクト処理ロジックに適合します。フラットなストレージが必要なビジネスシナリオでは、3層より深いネスト構造をパスごとに手動で平坦化し、アンダースコアを使用して親ノードのキー名を連結できます。
平坦化により、JSONパース時の階層アクセスの複雑さが軽減され、リレーショナルデータベースへの保存やログ分析に適しています。変換ツールはデフォルトで元のネスト構造を保持し、ユーザーが平坦化を有効にするかどうかを個別に選択できます。
よくある質問
変換後もXMLの元のコンテンツはすべて保持されますか?
OKfmtのXML to JSONコンバーターはデフォルトですべてのXMLノード、属性、CDATAコンテンツを保持し、フォーマットに関係のない空行や改行のみを削除します。変換後のデータは元のXMLの情報と一致することを検証できます。
なぜ@_接頭辞で属性を区別するのですか?
この慣習により、属性と子要素が同じ名前の場合のキーの競合が回避されます。既存のほとんどのオープンソース変換ライブラリがこのルールに従っており、下流のコードはこの命名ロジックに直接適合できます。
オンラインのXML to JSONコンバーターの料金はいくらですか?
OKfmtが提供するXML to JSONコンバーターは無料のWebツールです。基本的な変換機能には使用制限がありません。付加価値サービスの規約は、公式サイトに掲載されている最新の公表内容に準じます。