XML to JSON
XMLドキュメントをJSONに変換し、APIやモダンなサービスに役立てます
XML入力
JSON出力
XML to JSON コンバーターとは?
SOAPレスポンスや、ベンダーの製品フィード、あるいはXMLの古い設定ファイルを渡され、それをJavaScriptアプリに取り込む必要に迫られたことがあれば、その苦労はおわかりでしょう。XMLは冗長で属性が多く、コードでたどるのが面倒です。一方、JSONは多くのモダンなAPI、NoSQLストア、フロントエンドのフレームワークが実際に求める形式です。このコンバーターはXMLをブラウザ内で読み取り、各要素をJSONのプロパティに、繰り返されるタグの集合を配列に、各属性をきちんと整理された@attributesオブジェクトに変換します――結果はそのままコードに貼り付けられます。
解析はブラウザ組み込みのDOMParserが行います。これはW3CがXML仕様で説明しているエンジンそのものです。出力されるJSONはRFC 8259が定める構造に従うため、JSONが受け入れられる場所ならどこでも有効です。データは一切端末から出ません――アップロードも、サーバーとのやり取りも、ログ記録もありません。
XML to JSON コンバーターの使い方
- XMLを貼り付ける – 整形式のXMLドキュメントを左パネルに入れます。単一のルート要素が必要です――これはどのXMLパーサーも課すルールです。
- 変換を見る – 入力するそばからJSONが右パネルに現れます。変換ボタンはなく、短いデバウンスにより1キーごとの再解析を避けて軽快に動きます。
- 属性を確認 – 要素の属性は
@attributesキーの下にまとめられ、子要素名と決して衝突しません。テキストと要素が混在するノードはテキストを#textの下に保持します。 - 繰り返しタグを確認 – 同じ親の下に同名タグが複数回現れる場合(複数の
<subscriber>要素など)、自動的にJSON配列になります。 - コピーまたはダウンロード – CopyでJSONを取得するか、Downloadでアプリやテスト用の.jsonファイルとして保存します。
ヒント: XMLが名前空間(xmlns:プレフィックス)を使う場合、プレフィックス付きのタグ名はそのままJSONキーに残ります(例:soap:Body)。ほとんどのJSON利用側は問題ありませんが、コロンを含むキーが下流のパーサーで引っかかる場合は、変換後にリネームしてください。
例
短い加入者一覧です。繰り返される<subscriber>要素はJSON配列になり、id属性は@attributesの下に入り、各リーフ要素は文字列値になります。
<?xml version="1.0" encoding="UTF-8"?> <subscribers> <subscriber id="1"> <subscriberId>SUB-1001</subscriberId> <msisdn>447700900142</msisdn> <plan>Unlimited 5G</plan> <roaming>true</roaming> </subscriber> </subscribers>
{
"subscriber": {
"@attributes": { "id": "1" },
"subscriberId": "SUB-1001",
"msisdn": "447700900142",
"plan": "Unlimited 5G",
"roaming": "true"
}
}よくある利用シーン
レガシーなSOAPやB2Bフィードの取り込み
キャリアの課金ゲートウェイ、銀行のミドルウェア、政府のデータ交換は、いまだにXMLで応答します――多くはSOAPエンベロープに包まれています。サービスがJSON-firstなら、レスポンスを変換するのが使えるデータを得る最速の方法です。本文を入れてJSONを取り出し、コードがすでに期待している形でフィールドにアクセスできます。エンベロープ構造については、W3CのSOAP勧告が参考になります。
XML設定のJSONへの移行
多くの通信ネットワーク要素(HSS、MME、SGSN)や古いJavaアプリは、設定をXMLから読み込みます。プロジェクトをJSONベースの設定へ移行する場合(または2つの設定を比較しやすくしたい場合)は、まずここでXMLを変換しましょう。特定の構造がどう対応付くかを再確認する際には、MDNのXML入門が役立ちます。
RSS・Atom・サイトマップをデータに変換
RSSやAtomフィード、sitemap.xmlファイルはいずれもXMLです。JSONに変換すれば、JavaScriptでエントリをループしたり、ドキュメントデータベースに保存したり、ダッシュボードに流したりするのが簡単になります。フィード形式については、W3SchoolsのXMLチュートリアルが扱っています。
主な機能
- リアルタイム変換 – 入力するそばからJSONが更新されます。クリックするボタンはありません。
- 属性の処理 – 属性は
@attributesの下にまとめられ、子要素と決して衝突しません。 - 自動的な配列化 – 繰り返される兄弟タグはJSON配列にまとまり、ほとんどのXML→JSON変換ツールの挙動に合致します。
- 混在コンテンツ対応 – テキストと子タグの両方を持つ要素は、テキストを
#textキーの下に保持します。 - プライバシー最優先 – 解析はすべてDOMParserでブラウザ内で実行され、何もアップロードされません。
よくある質問
XML属性はJSONでどう表現されますか?
各要素の属性は、その要素上の@attributesオブジェクトにまとめられます。つまり<subscriber id="1">は{ "@attributes": { "id": "1" } }になります。これにより、属性名が同名の子要素と衝突するのを防ぎます。
繰り返し要素はどうなりますか?
最初の出現は単一のオブジェクトを作ります。同名の2つ目の兄弟タグが現れた瞬間に値は配列へ昇格し、各出現がそこに追加されます。だからこそ2つの<subscriber>タグはJSON配列になり、単独のものはオブジェクトのまま残ります――下流のコードが配列を期待している場合は覚えておくべき点です。
値は数値や真偽値として型付けされますか?
いいえ。XMLには型情報がないため、各リーフ値は文字列として渡されます(45.2ではなく"45.2")。本物の数値や真偽値が必要なら、意図した型がわかっている変換後のコード側でキャストしてください。
XMLの名前空間を扱いますか?
はい。プレフィックス付きのタグ名(soap:Body、ns:Item)がそのままJSONキーに保持されるという意味で扱います。コンバーターは名前空間URIを解決したりプレフィックスを取り除いたりはしません――出力が予測可能になるよう、文字どおりの名前を保ちます。
データは安全ですか?
はい。変換はブラウザのDOMParserを使い、すべてクライアントサイドで実行されます。入力XMLも出力JSONも、ネットワークに送信されたり、キャッシュされたり、ログに記録されたりすることはありません。
関連ツール
- JSON to XML – 逆方向に――XML専用システム向けにJSONをXMLへ戻します。
- JSON Formatter – 変換後のJSONを確定する前に整えます。
- JSON Validator – アプリに組み込む前に、出力が有効なJSONであることを確認します。
- JSON to Table – 変換後のJSONを表としてプレビューし、構造を確認します。
役立つリソース
- W3C XML – XML仕様と関連標準の公式拠点。
- MDN DOMParser – このコンバーターを支えるブラウザAPIのドキュメント。
- RFC 8259 – IETFのJSON仕様――変換のターゲット形式。
- JSON.org – 鉄道図式の文法ダイアグラム付きの、オリジナルのJSON仕様。
- W3Schools XML Tutorial – XPathやXSDの基礎を含む、ステップバイステップのXML入門。
- Stack Overflow XML – XMLの解析やマッピングのエッジケースに関するコミュニティの回答。