貼り付け・ファイルアップロードしたXMLまたはJSONを、属性やテキストノードの構造を保ったまま もう一方の形式へ即座に変換します。インデント幅やルート要素名も細かく指定できます。
XML 入力
0 文字 / 1 行
JSON 出力
0 文字 / 要素・キー数 約0
変換オプション
インデント幅
出力形式
属性の扱い
XML宣言
TIPS
属性は「@属性名」、テキストは「#text」キーで表現されます。同じタグ名の要素が兄弟に複数ある場合は自動的に配列になるため、変換後の型(単一かどうか)を意識してコードに組み込みましょう。
XML⇄JSON変換ツールとは?構造を保ったまま相互変換する仕組み
XML⇄JSON変換ツールは、XML形式のデータとJSON形式のデータを、要素・属性・テキストの構造を保ったまま相互に変換できる無料のオンラインツールです。レガシーシステムが出力するXMLデータをモダンなJavaScript/TypeScript環境に取り込みたい場合や、逆にJSON設定をXMLベースのシステムに渡したい場合に活用できます。
変換の際、XMLの属性は「@属性名」、テキストノードは「#text」というキーに変換されるルールを採用しており、同じタグ名が繰り返し出現する場合は自動的に配列としてまとめられます。この対応関係を知っておくことで、変換後のJSON構造やXML構造を予測しやすくなります。
入力・変換・出力のすべての処理はブラウザ内のJavaScriptだけで完結し、貼り付けた内容が外部サーバーに送信されることはありません。APIレスポンスの確認や設定ファイルの形式変換など、社外に出せないデータを扱う場面でも安心して利用できます。
こんなシーンで便利です
APIのレスポンス形式を変換して確認したい時に
XML形式で返ってくるレガシーAPIのレスポンスを、フロントエンドで扱いやすいJSON形式に変換して構造を確認したい場合に活用できます。
レガシーなXMLデータをモダンな開発環境に取り込む時に
古いシステムからエクスポートされたXMLデータを、Node.jsやフロントエンドのコードで扱いやすいJSONへ変換して取り込みたい場合に便利です。
設定ファイルやマニフェストの形式を変換したい時に
XMLベースの設定ファイルをJSONベースのツールチェーンに合わせて変換したい、あるいはその逆を行いたい場合に、構造を保ったまま変換できます。
XMLとJSONの構造の対応関係を学びたい時に
属性・テキストノード・子要素がJSONのどのようなキーに対応するのかを、実際のデータで確認しながら理解を深めたい学習用途にも活用できます。
使い方は簡単 4ステップ
- 変換したいXMLまたはJSONを入力欄に貼り付けるか、ファイルをアップロードします。
- 変換方向(XML→JSON/JSON→XML)を選択します(貼り付けた内容から自動的に候補が判定されます)。
- インデント幅、属性の扱い、XML宣言の有無、ルート要素名などのオプションを必要に応じて設定します。
- 変換結果を確認し、「コピー」または「ダウンロード」ボタンで結果を取得します。
※貼り付け・変換・出力のすべての処理はブラウザ内で完結し、入力したデータが外部に送信されることはありません。
ご利用時の注意点
- 本ツールは一般的な要素・属性・テキストノードの変換に対応していますが、名前空間(xmlns)やCDATAセクション、コメントノードなどを含む複雑なXMLは、完全に元の構造を再現できない場合があります。
- 同じタグ名の要素が兄弟要素として複数存在する場合、JSON側では自動的に配列にまとめられます。1つしかない場合との構造の違いにご注意ください。
- JSON→XML変換時、最上位キーが複数ある場合や配列・値のみのJSONの場合は、ツール内で指定した「ルート要素名」がXMLの一番外側のタグとして使われます。
- 完全無料・安全:入力したXML・JSONデータは一切外部送信されない、通信が発生しないブラウザ完結型を採用しています。
XMLとJSONの変換ルール対応表
本ツールが採用している、XMLの要素・属性・テキストとJSON表現の対応関係です。
| XML | JSON表現 | 説明 |
|---|---|---|
| <name>田中</name> | "name": "田中" | 子要素を持たずテキストのみを持つ要素は、そのまま文字列に変換されます。 |
| <user id="1">田中</user> | "user": { "@id": "1", "#text": "田中" } | 属性は「@」プレフィックス付きのキー、テキストは「#text」キーで表現されます。 |
| <image/> | "image": null | 子要素・属性・テキストのいずれも持たない空の要素は null として変換されます。 |
| <items><item/><item/></items> | "items": { "item": [null, null] } | 同じタグ名の要素が複数存在する場合、自動的に配列としてまとめられます。 |
※上表は基本的な変換ルールの一例です。実際の変換結果は、入力するデータの構造やオプション設定(属性を含めるか等)によって変わります。
XML⇄JSON変換で押さえておきたい4つのポイント
変換結果を正しく読み解き、意図した構造で出力するために知っておきたい基本ルールを解説します。
結論:XMLとJSONは要素・属性・テキストの単位で機械的に対応する
XMLの要素は入れ子のオブジェクトやキーに、属性は「@」プレフィックス付きのキーに、テキストノードは「#text」キーに、それぞれ機械的に対応づけて変換できます。この3つの対応関係さえ押さえておけば、変換後のJSON構造がどうなるかをおおよそ予測できるようになります。
属性(@)とテキストノード(#text)の扱いが変換結果を左右する
XMLでは属性値と要素内のテキストが別々の情報として扱われるのに対し、JSONにはその区別がありません。本ツールでは属性に「@」、テキストに「#text」という予約キーを与えることで、この違いを区別できるようにしています。属性を無視したい場合は、オプションで属性の変換自体をオフにすることも可能です。
同名タグの繰り返しは配列になる、というルールを覚えておく
XMLでは同じ親の下に同名のタグを何度でも書けますが、JSONの1つのキーには1つの値しか持たせられません。
そのため、同名タグが2つ以上ある場合は自動的に配列としてまとめられます。1件だけのデータを扱っていたつもりが、データが増えて配列に変わることでプログラムがエラーになるケースがあるため、変換後の型(単一オブジェクトか配列か)を意識しておくことが重要です。
JSON→XML変換時のルート要素名に注意する
JSONにはXMLのような「唯一のルート要素」という制約がありません。最上位キーが1つだけのJSONであればそのキー名がそのままルート要素になりますが、キーが複数ある場合や配列・数値・文字列だけのJSONを変換する場合は、ルート要素名を指定する欄で名前を決めておく必要があります。指定を忘れると意図しない「root」というタグ名で出力されるため、事前に決めておくとスムーズです。
よくある失敗と対策
属性とテキストが混在するXMLを変換し、想定と違う構造に戸惑う
属性とテキストの両方を持つ要素を変換した際、単純な文字列ではなく「@属性名」と「#text」を含むオブジェクトになることに気づかず、後続の処理でエラーになってしまう失敗です。
💡 対策・解決策を見る▼
同名タグが1件しかない前提でコードを書き、後から配列化されてエラーになる
変換時点では同名タグが1件しかなかったためオブジェクトとして扱うコードを書いたが、後日データが増えて同名タグが2件以上になった結果、突然配列に変換されてプログラムがエラーになる失敗です。
💡 対策・解決策を見る▼
ルート要素名を指定せずJSON→XML変換し、意図しないタグ名で出力される
最上位キーが複数あるJSONをそのまま変換し、ルート要素名の指定を忘れたために「root」という汎用的なタグ名でXMLが出力されてしまう失敗です。
💡 対策・解決策を見る▼
名前空間(xmlns)付きのXMLをそのまま変換し、タグ名にプレフィックスが残る
名前空間のプレフィックス(例:ns:item)を持つXMLを変換した結果、JSON側のキー名にも「ns:」が残ってしまい、プログラムから扱いにくい形になってしまう失敗です。
💡 対策・解決策を見る▼
大きなXML・JSONを貼り付けてブラウザの動作が重くなる
数万行に及ぶ大規模なXMLやJSONを一度に貼り付けて変換しようとし、ブラウザのタブが一時的に重くなってしまう失敗です。
💡 対策・解決策を見る▼
よくある質問(FAQ)
Q.XMLの属性やテキストはJSONでどのように表現されますか
A. 属性は「@属性名」というキー(例:@id)、要素直下のテキストは「#text」というキーで表現されます。子要素を持たずテキストのみを持つ要素は、余計なキーを増やさずそのまま文字列として変換されます。
Q.同じタグ名の要素が複数ある場合はどう変換されますか
A. 同じ親要素の中に同名のタグが複数回出現する場合、JSON側では自動的に配列としてまとめられます。例えば <item/><item/> は "item": [null, null] のように変換されます。逆にJSON→XML変換時も、配列であれば同名タグを繰り返し出力します。
Q.JSON→XML変換時のルート要素名はどのように決まりますか
A. JSONの最上位キーが1つだけの場合は、そのキー名がそのままXMLのルート要素名として使われます。最上位キーが複数ある場合や配列・値のみの場合は、ツール内の「ルート要素名」欄で指定した名前(未入力の場合は root)がルート要素として使われます。
Q.空の要素(自己終了タグ)はどう扱われますか
A. 子要素も属性もテキストも持たない空の要素(<tag/> など)は、JSON側では null として表現されます。逆にJSON側で値が null のキーは、XML→JSON変換時と対になるよう、自己終了タグとして出力されます。
Q.名前空間(xmlns)付きのXMLも変換できますか
A. 名前空間のプレフィックス(例:ns:tag)は、タグ名の一部としてそのまま変換されます。名前空間の定義自体を解釈して属性を除去するといった高度な処理は行わないため、複雑な名前空間を含むXMLでは、変換後にタグ名の調整が必要になる場合があります。
Q.入力したXMLやJSONのデータが外部に送信されることはありませんか
A. ありません。本ツールはブラウザ内蔵のXMLパーサーとJavaScriptの処理だけで変換を完結させる、完全ローカル処理型のツールです。入力内容がサーバーに送信されることは一切なく、ページを閉じれば内容は消去されます。
Q.変換に失敗する場合、どのような原因が考えられますか
A. XMLの場合はタグの閉じ忘れや属性値の引用符の記述ミス、JSONの場合はカンマの過不足や引用符の閉じ忘れが主な原因です。エラーが表示された場合は、入力欄の構文(閉じタグ・カンマ・引用符)を確認してください。
あなたの声で、
このツールをより鋭く。
「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。