§

入力

モード
§

出力

日本のチームも XML と JSON を毎日橋渡しする作業に直面しており、多くの場合はスタックの 2 つの部分がどちらのフォーマットを話すかで意見が分かれるためです。医療機関では HL7 FHIR リソースが XML と JSON の両方で公開されており、電子カルテシステムへの取り込みに変換が必要です。JR や金融機関などのレガシーシステムは SOAP エンドポイントで XML エンベロープを返しますが、React フロントエンドは JSON を必要とします。FISC や個人情報保護法の下ではペイロードを外部サービスに送信できないため、ブラウザー内で動作するこの変換ツールが最適な選択肢です。

XML ↔ JSON 変換とは何ですか?

XML(Extensible Markup Language)は階層データのタグベースのテキスト形式です。SOAP Web サービス、RSS・Atom フィード、HL7 FHIR 医療記録、sitemap.xml ファイル、Maven・Spring・Android Gradle に付属する設定ファイルで見られます。JSON(JavaScript Object Notation、RFC 8259 で定義)は同じ種類のネストされたデータを、開閉タグの代わりにブレースと配列で記述します。JSON は今日ほぼすべての REST API が話す形式であり、すべてのブラウザーランタイムのネイティブな値形式です。2 つのフォーマット間の変換は、属性、混合コンテンツ、繰り返しの子要素、CDATA に直面するまでは些細に聞こえます。カスタム正規表現は間違いです;実際のパーサーが正解です。このツールは実際のパーサー(fast-xml-parser)を搭載してブラウザーで実行します。

XML ↔ JSON マッピングの仕組み

すべての変換は、バンドルされた fast-xml-parser ライブラリ(MIT、バージョン 4.x)を使用してブラウザー内でローカルに実行されます。高レベルのマッピングルール:

  1. 要素をキーに変換:各 XML 要素名が JSON オブジェクトキーになります。<user><name>Alice</name></user>{"user":{"name":"Alice"}} にマップされます。
  2. 属性をプレフィックス付きキーに変換:属性は選択したプレフィックスを先頭に付けたキーの下に格納されます。プレフィックス @ で、<user id="1">{"user":{"@id":"1"}} を生成します。
  3. テキストコンテンツをテキストノードキーに変換:要素に属性とテキストの両方がある場合、テキストは選択したテキストノードキーの下に置かれます。<price currency="USD">9.99</price> はキー #text{"price":{"@currency":"USD","#text":"9.99"}} を生成します。
  4. 繰り返し子要素を配列に変換:繰り返し子タグに配列を強制がオンの場合、同じ名前の複数の兄弟要素が JSON 配列にまとめられます。<items><item>A</item><item>B</item></items>{"items":{"item":["A","B"]}} になります。
  5. CDATA セクション:<![CDATA[…]]> 内の生テキストは #cdata キーの下に保持されるため、ラウンドトリップ中に山括弧とアンパサンドが再エスケープされません。
  6. JSON から XML への変換はマッピングを逆にします:オブジェクトキーが要素になり、プレフィックス付きキーが属性になり、配列が繰り返しの兄弟要素に展開されます。

このツールで XML と JSON を変換する理由

  • データがあなたのマシンに残ります。すべてのパースとすべての構築がこのページの JavaScript コンテキストで実行されます。FHIR 患者バンドル、SOAP 認証エンベロープ、独自設定ファイル、請求エクスポート——コードパスにアップロードステップがないため、いずれもサーバーには触れません。ネットワークパネルを開いて確認してください。
  • レガシー SOAP を REST ファーストのフロントエンドに取り込む作業は最もよく聞く要望です。銀行や保険会社が数年は廃止されない SOAP エンドポイントを公開している;それを呼び出す React や Vue アプリは XML を学びたくない。エンベロープを貼り付け、属性プレフィックスと名前空間を保持した JSON を取得し、Body の内容をステートストアに入れてください。
  • RSS、Atom、サイトマップのコンシューマーも恩恵を受けます。ポッドキャストディレクトリ、ニュースアグリゲーター、または sitemap.xml を取り込む社内ダッシュボードは、XML パーサーを書くことを完全にスキップできます。フィードを一度変換し、JSON 配列で作業すれば、クライアントコードはすでに話している言語に留まれます。
  • 設定エクスポートがリストを締めくくります。Maven、Spring、Android Gradle、旧式の Ant ビルドはいずれも XML を出力します;反対側のクラウドネイティブツール(Terraform、Ansible、GitHub Actions、cloud-init)は JSON または YAML を読みます。サードパーティの依存関係を持つ Python スクリプトを実行する代わりにブラウザーで変換してください。未知の Web サービスへの貼り付けが許容されないエアギャップ環境で特に便利です。

XML ↔ JSON 変換の主な用途

XML と JSON の橋渡しは、統合エンジニアリング、API ツール、データエンジニアリング全般に現れます。いくつかのパターンが作業量の多くを占めます:

  • SOAP から REST への橋渡し:レガシーバンキングや保険 API が返す SOAP エンベロープから Body ペイロードを取り出し、サーバーサイドプロキシレイヤーなしに React や Vue フロントエンドが消費できるよう JSON に変換する。
  • FHIR 医療記録:HHS/ONC と NHS Digital が臨床データ交換に要求するフォーマットである HL7 FHIR XML バンドルを、アナリストがクエリできる MongoDB Atlas コレクションや PostgreSQL JSONB カラムに読み込むために JSON に変換する。
  • サイトマップとフィードの処理:sitemap.xml や RSS/Atom フィードを JSON 配列に変換し、カスタムインデクサー、Slack ボット、またはダッシュボードウィジェットが XML パーサーを依存関係として取り込まずにエントリを反復できるようにする。

XML ↔ JSON のラウンドトリップはどのようなものですか?

小さな例を用意します。<user id="1"><name>Alice</name></user> を入力に貼り付け、属性プレフィックスを @ に設定し、モードを XML → JSON のままにして「変換」を押します。出力は {"user":{"@id":"1","name":"Alice"}} です。モードを JSON → XML に切り替え、その JSON を貼り付け直し、インデントをスペース 2 つに設定して再度「変換」を押します。<user id="1">\n <name>Alice</name>\n</user> が得られます——元と構造的に同一です。ラウンドトリップで保証されない唯一のものは属性の順序で、JSON オブジェクトキーは仕様上順序なしだからです。

この XML ↔ JSON 変換ツールは同じオリジンにバンドルされた fast-xml-parser@4 を搭載し、属性、CDATA、繰り返し子タグ、名前空間プレフィックスを処理し、ページが一度読み込まれればオフラインでも動作し続けます。アップロードステップなし、CDN プロキシなし、分析ビーコンなし、テレメトリなし。入力と出力のすべてのバイトがブラウザーに残ります——それがまさに FHIR 患者バンドル、SOAP 認証エンベロープ、またはチームの外の誰にも見られるべきでないあらゆる形状のデータを扱うときに必要なことです。