Command Palette

Search for a command to run...

XML から JSON への変換: SOAP、RSS、および構成 XML をクリーンな JSON に変換

XML から JSON への変換: SOAP、RSS、および構成 XML をクリーンな JSON に変換

T
Toolz Team
|Jul 14, 2026|16 分読んでください

データツール コレクションの一部

両者の間に標準的なマッピングはありません。 XML 1.0 属性、名前空間、順序付けされた混合コンテンツとコメントを持つ; RFC 8259 6 つのタイプがあり、属性はありません。すべてのコンバータは独自のブリッジを発明するため、そのうちの 2 つは同意しません。

XML から JSON への変換を尊重することを教えてくれた統合は、配送業者の API でした。 スタック内の他の場所での最新の休息、そして、JSON パイプラインに折り畳む必要があった、SOAP と返された XML のエンベロープを話したレガシー エンドポイントです。 「JSON に XML だけです」と考え、1 行のコンバーターに到達しました。 その後、エッジ ケースが到着しました。 <Package> 順序に含まれるパッケージの数に応じて、1 つのオブジェクトである場合もあれば、リストの場合もある要素。 あい id 要素テキストだけを調べたため、私の単純なコンバーターが完全にドロップしたと考えています。 あ <Description> アンパサンドが含まれていたため、CDATA に包まれていました。これらはすべて、データを静かに破損させました。JSON はもっともらしく見え、下流に 3 つのサービスしか表示されない点で間違っていました。

XMLとJSONは互いに自明に変換するべきように見えますが、異なるプリミティブでデータをモデル化するため、don&#39; tです。 JSONにはオブジェクト、配列、文字列、数値、ブール値、null - 小さくてクリーンなセットがあります。 XMLには要素、属性、テキストノード、混合コンテンツ、名前空間、CDATA、コメント、処理命令があり、決定的にそれがあります 配列がありません あんど タイプなし。 そのため、コンバーターは、損失のない形式ではしないという決定を下さなければなりません。JSON がそれらの概念を持たない場合、属性はどこにあるのでしょうか? XML が両方を同じようにマークしている場合、1 項目のリストから 1 つの要素をどのように判断しますか? 属性とテキストの両方を持つ要素はどうなりますか?

あい XML から JSON へのコンバー それが意図的に - そして一貫して - それらの決定を下すのは、クリーンな統合と下流での 1 週間のデバッグの違いです。 Toolz.dev 用に構築したものは、属性を接頭辞付きキーにマッピングして何も失われず、繰り返されるタグを JSON 配列に折りたたんで構造を保存し、混合コンテンツのテキストを専用キーの下に保持し、CDATA をそのまま読み取ることができます。そして、それはブラウザで実行される依存関係のないパーサーですべてを実行します。統合ペイロードはまさに、あなたがすべき種類のデータであるため、これは重要です&#39;t 見知らぬ人にアップロード&#39; s サーバー。

このガイドでは、変換が XML の構造的な癖を処理する方法、繰り返し要素が配列になる場合、属性と名前空間を処理する方法、およびこの変換が常に行われる SOAP および RSS ワークフローについて説明します。

tl;dr: XML を Toolz.dev XML から JSON へのコンバータ、インデントを選択して、属性がどこである場合に JSON をきれいにします @- 接頭辞付きのキー、繰り返しタグが配列になり、コンテンツが混在するテキストが下に置かれます #text、そして CDATA はそのまま読み込まれます。 オプションの型解析ターン "44.95" 実数に。 依存関係のないパーサーを使用し、100% クライアント側で実行されるため、SOAP と統合ペイロードはアップロードされず、ペアリングします。 JSON から YAML へ そして、 JSON フォーマッタ パイプラインの次のステップに。


XML が JSON に単純な 1 対 1 のマッピングでないのはなぜですか?

XML と JSON が交換可能であるという直観は、構造化データを表す共有ジョブに由来しており、異なる構成要素上で壊れます。不一致は 4 つの特定の場所に現れ、コンバーター & #39; の品質は完全にそれらをどのように処理するかによって決まります。

属性には、同等の JSON がありません。 <book id="bk101">War and Peace</book> 属性がある (id) とテキスト コンテンツ (War and Peace). JSON には属性の概念がない; すべてがキーと値のペアである。 コンバータは規約を発明する必要があり、広く普及しているのは属性キーに接頭辞を付けることである - { "book": { "@id": "bk101", "#text": "War and Peace" } }。 単純なコンバーターと同じように、属性を削除すると、データが黙って失われます。

JSON には配列がありますが、XML には配列がありません。 XML では、リストは同じタグを繰り返すだけです。3 つ <item> 1 つの親の下の要素。 でもシングル <item> 構造的には 1 つのリストと同じように見えます。JSON はオブジェクトを放射するか配列を放射するかを知る必要があり、利用できる信号は発生のみです。そのため、繰り返されるタグは配列になり、単一のタグはオブジェクトのままになります。

混合コンテンツ。 要素は、子要素とゆるいテキストの両方を保持できます。 JSON オブジェクトは、自然に「このオブジェクトには、裸の文字列値も含まれている」という意味で表現できません。したがって、テキストは次のような予約済みキーの下に置かれます。 #text

XML には型がありません。 XML のすべての値はテキストです。 <price>44.95</price> 文字列です "44.95"、数ではない、コンバーターがそれを強制することを選択しない限り - そしてその選択は間違っている可能性があります、なぜなら <zip>08544</zip> 文字列のままであるか、先行ゼロを失う必要があります。

ザ・ コンバーター 存在しないふりをするのではなく、これらのそれぞれを明示的に処理します。 そのため、出力が JSON にスロットのない XML の部分を静かにドロップするのではなく、ソースに忠実であり続けるのです。

繰り返し要素が配列になるのはいつですか?

これは、XML から JSON への変換の中で最も混乱する部分であり、驚くことではなく、理解する価値があります。 ルールは コンバーター 使用は、発生ベース: 特定の親内で、タグ名が複数回表示される場合、その値が JSON 配列にまとめられ、1 回だけ表示される場合は、単一のオブジェクトまたは値のままになります。

ということで <catalog> 2つで <book> 子供たちがプロデュース { "catalog": { "book": [ {...}, {...} ] } } ー配列です しかしa <catalog> 1つで <book> プロデュース { "catalog": { "book": {...} } } - プレーンなオブジェクト、配列なし。

計画する結果: 1 つのアイテムのリストは、リストのようには見えません。 ダウンストリーム コードが期待する場合 catalog.book 常に配列であり、それを反復処理するために、1 冊の本の応答でそれが破綻します。 book その特定の時間オブジェクトになります。 this isn&#39;t a bug in the conversion - it&#39;s an evoidable consequence of XML not marking lists - but it&#39;s a real gotcha in integrations where the item count varies.これはisn& #39;t変換のバグです。私の配送業者の災害はまさにこれでした。one-package orders はオブジェクトを返し、multi-package orders は配列を返し、私のコードは配列を想定しました。

消費するコードの防御パターンは正規化することです。フィールドがどちらかである可能性がある場合は、反復する前に配列に強制します ([].concat(catalog.book). 知っている なんでや 形状が変化するので、ガードにやけどをするのではなく、そのガードを書くことができます。

属性と名前空間はどのように処理されますか?

属性は、オブジェクト キーに変換されます。 @ プレフィックス。 <user role="admin" active="true"> なる { "user": { "@role": "admin", "@active": "true" } }.プレフィックスは属性を子要素と視覚的に区別したままにし、属性と子要素が名前を共有する衝突を防ぐ。 don&#39; 属性がまったく必要ない - 要素データだけが必要な場合 - the コンバーター よりクリーンな結果を得るために、それらを完全にドロップする「属性を無視」オプションがあります。

名前空間は、タグ名の一部として出てきます。 <soap:Body> 文字通り名前の鍵になる "soap:Body"、そして xmlns:soap="..." 他の属性と同じように、着陸する属性です @xmlns:soap。 これは実用的な選択です。名前空間を URI に完全に解決すると、扱いにくいキーが生成され、統合コードが実際に必要とするもの、つまり対処する必要があります。 soap:Body おなじみの接頭辞名で。 SOAP や SVG、または名前空間のある語彙を処理している場合、XML から知っているプレフィックスは JSON で取得するキーです。

CDATA セクション - <![CDATA[ ... ]]> XMLに特殊文字の生テキストを運ぶようにするブロック - は、エンティティデコードなしでそのまま読み取られる、それがまさにその目的である。 A <script><description> アンパサンドを保護するために CDATA でラップされ、角かっこは、これらの文字をそのまま使用して通っています。 CDATA の外部、標準エンティティ (&lt;&amp;、および友人) および数値参照 (&#233;&#xE9;) は、実際の文字にデコードされます。

ツールを使用して XML を JSON に変換するにはどうすればよいですか?

ステップ 1: XML を貼り付けます

整形式の XML は、XML の有無にかかわらず機能します <?xml ?> 名前空間の有無にかかわらず、宣言。 宣言、ドキュメントタイプ、コメント、および処理手順が認識され、スキップされるため、API レスポンスまたはファイルから直接ドキュメント全体を貼り付けることができます。 サンプルの読み込みボタンを使用すると、属性、入れ子になった要素、および繰り返しタグを含むカタログが表示されるため、すべての変換動作を一度に確認できます。

ステップ 2: オプションを選択してください

JSON の 2 スペースまたは 4 スペースのインデントを選択します。 属性を含めるか、削除するかを決定します。 型を解析するかどうかを選択します。これをオフのままにして、すべての値が文字列のまま (安全で無損失) にすると、オンにすると、明白な数値とブール値が実際の JSON 数値およびブール値になります。 郵便番号や ID などの値に保持する必要がある先行ゼロがある場合、オフは正しいデフォルトです。

ステップ 3: 変換してレビューする

コンバータは最初に解析し、不正なマークアップ - 不一致の終了タグ、閉じられていない要素、終了していない CDATA ブロック - をガベージ JSON を生成するのではなく、特定のメッセージで報告します。成功すると、JSON は行数とバイト数で表示されます。 array-vs-object の決定が期待どおりであることを確認するためにスキムします。

ステップ 4: コピーまたはダウンロード

JSON をクリップボードにコピーしてコードに貼り付けます。または、それを .json ファイル。 ここから、リクエスト本文、データ ストア、またはパイプラインの次の段階にドロップします。 次のステップが構成形式の場合、 JSON から YAML へのコンバータ さらにそれを取る。

この変換に一般的なワークフローは何ですか?

レガシー SOAP API の統合

SOAP は、企業、銀行、ロジスティクス、および政府システムのいたるところで、今でもどこにでもあり、XML だけを語ります。 最新の JavaScript またはノード サービスが SOAP 応答を使用する必要がある場合、XML エンベロープを JSON に変換する必要があります。 名前空間保存変換手段 soap:Body あんど soap:Envelope 使い慣れた名前を保持すると、属性処理により、SOAP が大好きなメタデータが要素をハングアップすることができます。 これは、同じカテゴリーの接着剤作業です。 API デバッグ ガイド

RSS と Atom フィードの読み取り

RSS および Atom フィードは XML であり、JavaScript アプリに取り込むということは、それらを変換することを意味します。 フィード <item> 要素は教科書の繰り返しタグケースです - それらはアイテムのJSON配列になり、まさにあなたが望むものになります .map() リストをレンダリングします。 エンクロージャーのような属性 url あんど type プレフィックスキーの下に保存されるため、ポッドキャストとメディア フィードは、オーディオ リンクをそのまま維持します。

構成ファイルとデータ ファイルの移行

古いアプリケーションは、構成とデータをXMLに保存します - 考えます .config ファイル、サイトマップ、エクスポートされたデータセット、Office Open XML フラグメント。 システムを最新化する場合や、レガシー データを JSON ネイティブ ストアにインポートする場合に、これらを JSON に変換することが最初の方法です。 タイプパースオプションは、次の場合に役立ちます。 わかっている 数値フィールドは真に数値であり、宛先で入力する必要があります。

テストとプロトタイピング

とき you&#39; re配線データフローとちょうどJSONとしてXMLペイロードの形状を見る必要がある - TypeScriptインターフェイスを設計するには、応答をモックするには、フィールドパスをチェックするには - ブラウザでのクイック変換は、使い捨てパーサコードを書き込むビート変換、構造を読み取り、それに対してあなたの型を書き込みます。

XML と JSON: 各フォーマットはいつ適合しますか?

シーリング json
初等時代と生態系 エンタープライズ、SOAP、ドキュメント Web API、JavaScript、構成
属性 ファーストクラス なし - プレフィックス付きキーにマッピングされます
配列 なし - 繰り返されるタグはリストを意味します ファーストクラス
種類 すべてのテキスト 文字列、数字、ブール値、ヌル
コメント 対応 仕様にはありません
名前空間 ファーストクラス なし - 接頭辞付きキー名として保持されます
冗長性 より高い - 終了タグ、属性 下 - 中括弧と括弧
自然の生息地 SOAP、RSS/ATOM、Office フォーマット、構成 REST API、フロントエンド データ、 package.json

テーブルの背後にあるパターン: XMLは、構造、検証、自己記述が重要な文書やエンタープライズ交換のために構築されました; JSONは、軽さとJavaScriptオブジェクトへの直接マップが重要であるWeb業界での動きが、古いXMLベースのシステムからJSONネイティブのフロントエンドとサービス - you& #39; が住んでいる場所でレガシーデータを満たし、それを現代のパイプラインにもたらすため、変換方向は圧倒的にXML-to-JSONですそのパイプラインのためのフォーマットツールのより広範なセットが、 コーディング ツール ガイド

機密データを含む XML を変換しても安全ですか?

統合ペイロードは、漏洩したくないものと密接に関係しています。顧客の記録を運ぶ SOAP レスポンス、内部エンドポイントと資格情報を含む構成ファイル、個人情報を含むデータ エクスポート。 そして、これらはまさにオンライン コンバーターに貼り付けられているもので、通常は統合の途中で、通常は急いでいます。

ザ・ Toolz.dev コンバータ 依存関係のないパーサーを使用して、ブラウザー内で完全に解析および変換します。いいえ DOMParser、サーバーの呼び出し、データはページから離れません。 ページが読み込まれた後でも、ネットワークを切断します。 これは、ツールがどのように構築されるかについてのアーキテクチャの事実であり、ポリシー ドキュメント内での約束ではなく、ツールボックス全体の背後にあるブラウザの第一の原則です。 データ プライバシー ガイド

標準注意事項が適用されます: クライアント側変換は変換ステップを保護します。その後 JSON で行うこと - 貼り付ける場所、送信先 - は別の決定です。ただし、変換自体は XML をマシン上に保持します。

フェイク

XML をオンラインで JSON に変換するにはどうすればよいですか?

XMLをXML to JSON Converterに貼り付けて「変換」をクリックします ツールはXMLを解析し、選択したインデントとオプションでJSONに変換し、結果をコピーまたはダウンロードできます 処理は100% ブラウザ内です - 何もアップロードされません。

JSON 出力では XML 属性はどのように表されますか?

属性は、@ で先頭に付けられたオブジェクト キーになるため、ID=&quot;BK101&quot; の book 要素は、"@id" キーに変換されます。 これにより、属性は子要素とは区別されます。 要素データのみが必要な場合は、属性出力を完全にオフにすることができます。

XML 要素が配列になって、他の XML 要素がオブジェクトのままになるのはなぜですか?

JSON には、要素が繰り返される可能性があることをマークする方法がないため、コンバータは発生を使用します。同じ親の下にタグが複数回表示される場合は、配列になります。また、1 つのオブジェクトに留まると表示される場合は、その要素が配列になります。 これはソースを忠実に反映していますが、1 つのアイテムのリストは配列ではなく 1 つのオブジェクトのように見えます。

コンバータは CDATA セクションと XML エンティティを処理しますか?

はい。 CDATA ブロックは、エンティティ デコードなしでそのまま読み込まれます。これがその目的です。 CData の外では、&lt;、&gt;、&amp;、&quot;、&apos; などの標準エンティティと、&#233; や &#xe9; などの数字参照が実際の文字にデコードされます。

SOAP レスポンスまたは RSS フィードを JSON に変換できますか?

はい。 SOAP エンベロープと RSS または Atom フィードは通常の XML なので、他のドキュメントと同様に変換されます。 namespaced タグはキー名にプレフィックスを保持します - soap:Body は &quot;soap:Body&quot; key - そして、RSS 項目のような繰り返される要素は JSON 配列になります。

数字とブール値は変換後もテキストのままですか?

デフォルトでは、XML には型システムがなく、「007」や「1.10」などの値はテキストとして意味がある場合があります。 型解析オプションを有効にして、明白な数値とブールのテキストを実際の JSON 数とブール値に変換して、必要なときに変換します。

機密データを含む XML を変換しても安全ですか?

はい。 parser はブラウザーで完全に JavaScript で実行されます。ネットワーク リクエストではデータが伝送されず、ログや保存もされず、ツールはオフラインで動作します。顧客レコード、内部識別子、または統合シークレットを含む XML はマシンから離れることはありません。

XML と JSON の違いは何ですか?

XML は、ドキュメントとエンタープライズ データ交換用に設計された、開閉タグ、属性、名前空間、およびコメントを含むマークアップ言語です。 JSON は、オブジェクト、配列、およびプリミティブ値から構築されたより軽い形式で、最新の Web API のデフォルトです。 古い SOAP またはフィードベースのシステムを JavaScript フロントエンドに統合する場合、XML を JSON に変換するのは一般的です。


XMLとJSONは交換可能に見えます そしてaren& #39; t、JSONには属性がなく、繰り返しによる配列がなく、テキストと並んだ子もないので - 正確な場所はナイーブな変換で静かにデータを失うことになります それらのケースを意図的に処理するコンバーターは、ソースに忠実なJSON that& #39; を与えます: XML を貼り付け、属性と繰り返しタグをどのようにマッピングしたかを確認し、もっともらしい破損ではなく、パイプラインにクリーンなデータを取り込みます。

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!