ToolConvoyToolConvoyv2.6
DATA

XML to JSON — ブラウザ内 XML → JSON 変換

XML を JSON データに変換します。属性処理・名前空間除去・配列検出を設定可能。すべてクライアントサイドで動作——アップロード不要、制限なし。

● ローカル動作 · ゼロコピーパイプラインページ読み込み以降のツールによる通信:0件

XML と JSON は過去四半世紀にわたり、二大汎用データ交換フォーマットであり続けています。その相互変換は、2 つの技術スタックを橋渡しする行為です。JSON は API 時代を制しました——JavaScript のネイティブ形式であり、REST エンドポイントのデフォルトであり、設定ファイルの共通語です。XML はエンタープライズ時代を制しました——SOAP の形式、ドキュメント保存の形式、金融取引メッセージの形式、そしてスキーマ検証が法的要件となる規制業界でのデータ交換形式です。XML から JSON への変換は技術というよりアートです。なぜなら XML には、JSON が直接表現できない機能があるからです。属性、名前空間、コメント、処理命令、混合コンテンツがその代表です。

属性の問題が最も目立ちます。XML 要素は子要素(構造化データ)と属性(要素自身のメタデータ)の両方を持てますが、JSON にはデータとメタデータを区別する仕組みが組み込まれていません。すべての XML → JSON 変換器は規約でこの問題に対処しています——属性に @ 接頭辞を付ける、独立したメタデータキーを用いる、属性を取り除く——しかし「正しい規約」について 2 つの変換器が一致することは決してありません。本ツールは @ 接頭辞規約をデフォルトとしています。npm エコシステムで最も広く採用されている(xml2js、fast-xml-parser)方式だからです。ただし設定パネルでは 3 つの方式すべてを公開しており、出力が下流の JSON コンシューマが期待する規約と一致するように調整できます。

最終的な受け渡しについて:JSON 出力をプログラミング言語向けの型付きデータにしたい場合は、いずれかの「JSON → コード」ジェネレーターに通してください(フロントエンドなら JSON to TypeScript、バックエンドサービスなら JSON to Go、データパイプラインなら JSON to Python)。元 XML に正式なスキーマが付属していた場合は、JSON Schema Generator で出力から JSON Schema を逆推し、将来の JSON ペイロードを元 XML スキーマと同じ制約で検証できるようにしましょう。行き先が構成管理システム(Ansible、Kubernetes、Docker Compose)の場合は、JSON をさらに JSON to YAML で YAML に変換してください——YAML は多くの DevOps ツールで好まれる構成形式です。

広告

使い方

  1. XML を貼り付けまたはドロップ

    XML 文字列またはファイルを入力欄にドロップします。パーサーが XML 構文を検証し、整形式エラーがあればインラインで報告します。妥当な XML は自動的に変換ステージへ進みます。

  2. JSON の規約を設定

    XML 属性の規約(`@` 接頭辞、独立した `$` オブジェクト、または属性を除去)を選択し、名前空間接頭辞の除去と配列検出の感度を切り替えます。デフォルト設定は xml2js ライブラリの規約に準拠しています。

  3. JSON をコピーまたはダウンロード

    整形済み JSON をクリップボードへコピーするか、.json ファイルとしてダウンロードできます。出力は 2 スペースインデントで整形され、可読性と diff のしやすさに配慮しています。

よくある質問

変換器は JSON 配列になる要素をどう判定しますか?

同じタグ名の兄弟要素が繰り返される場合、それらは JSON 配列になります。`<item>` 要素が単独の場合はオブジェクトのまま保持されますが、「強制配列」モードを有効にすれば配列化できます。検出閾値は調整可能で、回数に関わらず特定のタグ名を常に配列として扱うよう設定できます。

XML 属性に対して変換器はどの規約を使いますか?

デフォルトは `@` 接頭辞です。XML の `<book id="123">` は `{"book": {"@id": "123"}}` になります。設定では代替規約(`$` ラッパーオブジェクトや、属性を完全に除去)も利用できます。属性から JSON へのマッピングに単一標準はなく、利用する JSON コンシューマの規約に合わせて選んでください。

XML 名前空間は JSON 出力でどう扱われますか?

デフォルトでは、スコープ解決に使われたあと、要素名から名前空間接頭辞が除去されます。`<ns:title xmlns:ns="http://example.com">` は単に `"title"` になります。設定で「名前空間接頭辞を保持」を有効にすれば、`"ns:title"` をキー名としてそのまま残せます。

子要素を持つ要素内の XML テキストコンテンツはどうなりますか?

混合コンテンツ(テキストと子要素の両方を含む要素)はデフォルトで `#text` キーで扱われます。`<para>Hello <b>world</b></para>` は `{"para": {"#text": "Hello ", "b": "world"}}` になります。設定で「テキストを結合」を切り替えれば、隣接するテキストノードをまとめられます。

制限事項

  • XML スキーマと DTD は処理されません変換器は DOCTYPE 宣言、内部 DTD サブセット、XSD スキーマ参照を無視します。DTD の実体宣言(5 つの定義済み XML エンティティを除く)はパースエラーの原因になります。
  • 出力に CDATA の区別はありませんCDATA セクションは展開され、通常のテキストとして扱われます。JSON コンシューマは、元々 `<![CDATA[...]]>` で囲まれていたコンテンツと通常のテキストコンテンツを区別できません。
  • 処理命令とコメントは除去されますXML 処理命令(`<?xml-stylesheet?>`)とコメント(`<!-- comment -->`)は変換時に破棄されます。これらに直接対応する JSON の表現はありません。

プラットフォーム別の注意点

macOS
macOS には `plutil` が付属していますが、plist XML しか JSON に変換できず、汎用 XML は扱えません。ブラウザツールは任意の XML スキーマに対応でき、API レスポンスの確認に適しています。
Linux
CLI での代替は `xmlstarlet` または `xq`(yq 由来)で、いずれも XML を JSON に変換できます。チャット画面やドキュメントページから XML を貼り付ける用途にはブラウザツールが手軽です。
Web
パースも変換もすべてブラウザ内で行われます。XML データが端末の外に出ることはありません。機密性の高い XML ペイロードを、サーバーサイドの変換サービスに送らずに変換したい場合に有用です。
広告

関連ツール

広告