XML to JSON コンバーター
XMLを貼り付けると即座にJSONを取得。属性を @_ キーに変換し、繰り返し要素を配列として処理。100%ブラウザ内処理、データは送信されません、登録不要。
オプション · 2スペース · XML → JSON
XML to JSON変換とは何ですか?どのように機能しますか?
XML(拡張マークアップ言語)とJSON(JavaScript Object Notation)はどちらも構造化データフォーマットですが、根本的に異なるモデルを持っています:XMLは属性と混合コンテンツ(テキストと子要素の混在)を持つ要素のツリーです。JSONはオブジェクト、配列、文字列、数値、ブール値、null値のツリーです。これらの間の変換には、この不一致を橋渡しする一連の規則が必要です。
このツールは最も広く採用されている規則を使用します — fast-xml-parser(Node.js)、xmltodict(Python)、JAXB(Java)などの人気ライブラリで使用されているものと同じです:
**1. 属性 → @_ プレフィックス。** XML属性にはJSONの直接同等物がありません。規則は @_ でプレフィックスされたキーとして表現することです。そのため
**2. 属性を持つ要素のテキスト内容 → #text。** 要素が属性とテキスト内容の両方を持つ場合(
**3. 繰り返す兄弟要素 → 配列。** XMLは同名の複数の子要素を許可します。JSONオブジェクトは重複キーを持てません。解決策は同名の兄弟要素を配列に収集することです。1つの
**4. 型の強制変換なし — すべての値が文字列のまま。** XMLにはテキスト内容のネイティブな型システムがありません。XMLの「123」は文字列です。それをJSON数値 123 に変換するには著者の意図について仮定が必要です — 郵便番号(「01234」→ 1234)、電話番号、パディングされた識別子、精度に影響する小数文字列では間違った仮定です。このツールはすべての値を文字列として保持します。型を知っているフィールドについては自分のコードで型変換を適用してください。
**5. コメント、処理命令、名前空間に対して非可逆。** XMLはJSONがサポートしない機能を持っています:コメント()、処理命令()、名前空間セマンティクス。これらは変換中に廃棄または近似されます。XMLを無損失で再整形・圧縮・バリデートするには、代わりに XMLフォーマッター をご利用ください。逆方向の変換 — JSONからXMLを構築するには — JSON to XMLコンバーター をご利用ください。
**なぜXMLをJSONに変換するのですか?** JSONはJavaScriptのネイティブフォーマットであり、REST APIのデフォルト交換フォーマットです。レガシーSOAPサービス、RSSフィード、サイトマップ、またはエンタープライズシステムからXMLを受け取る場合、JSONに変換することでJavaScriptの標準的なオブジェクトアクセス、JSONパスクエリ、JSONネイティブのデータベースやAPIを使用してデータを扱えます。変換は一方向のブリッジです:モダンなスタックでXMLデータを消費するのに役立ちますが、XMLドキュメントの保存や往復には適していません。
// Convert XML to JSON in Node.js using fast-xml-parser
import { XMLParser } from 'fast-xml-parser';
const xml = `<catalog>
<product id="P01">
<name>Wireless Headphones</name>
<price currency="USD">79.99</price>
</product>
</catalog>`;
const parser = new XMLParser({
ignoreAttributes: false, // preserve attributes
attributeNamePrefix: '@_', // @_ prefix for attributes
textNodeName: '#text', // #text for mixed element content
parseAttributeValue: false, // no type coercion on attributes
parseTagValue: false, // no type coercion on element text
});
const result = parser.parse(xml);
console.log(JSON.stringify(result, null, 2));
// {
// "catalog": {
// "product": {
// "@_id": "P01",
// "name": "Wireless Headphones",
// "price": {
// "@_currency": "USD",
// "#text": "79.99"
// }
// }
// }
// } 主な機能
ライブ変換
XMLを入力・貼り付けるとJSON出力が即座に更新されます — 「変換」ボタンは不要です。大きな入力(>200KB)はブラウザのレスポンスを維持するために自動的に手動モードに切り替わります。
@_ 属性プレフィックス規則
XML属性は @_ プレフィックス付きのJSONキーになり、fast-xml-parserやxmltodict規則に従います。
繰り返し要素の自動配列検出
同名の兄弟要素は自動的にJSON配列になります。1つの
型の強制変換なし — 値は文字列のまま
すべてのXML値はJSON文字列として保持されます。先頭ゼロ、電話番号、パディングされたコード、「true」や「false」のようなブール値に見える文字列は数値やブール値にサイレント変換されません。
100%ブラウザベースのプライバシー
すべての変換はJavaScriptを使用してブラウザ内でローカルに実行されます。クレデンシャル、内部設定、機密ペイロードを含むXMLはどのサーバーにも送信されず、記録されず、保存されません。
整形エラー報告
XMLが整形されていない場合、ツールは最初のエラーの正確な行番号と列番号を報告します。変換前に問題をすぐに特定して修正できます。
サンプル
設定ファイル
<?xml version="1.0" encoding="UTF-8"?>
<appConfig version="2.1" env="production">
<database>
<host>db.example.com</host>
<port>5432</port>
<name>myapp_prod</name>
<pool max="10" min="2"/>
</database>
<cache enabled="true">
<ttl>3600</ttl>
<driver>redis</driver>
</cache>
</appConfig> 属性とネストされた要素を持つ小さなアプリケーション設定です。属性はJSON出力で @_ プレフィックス付きのキーになります:version="2.1" は appConfig の下で "@_version": "2.1" になり、pool要素の max と min 属性は "@_max": "10" と "@_min": "2" になります。port や ttl を含むすべての値は、コンバーターが型の強制変換を行わないため、文字列のままです。
サイトマップの断片
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://go-tools.org/tools/xml-to-json</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://go-tools.org/tools/json-to-xml</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset> 2つのURLを持つsitemap.xmlの断片です。
RSSアイテム
<item> <title>XML to JSON: A Practical Guide</title> <link>https://go-tools.org/blog/xml-to-json-guide</link> <pubDate>Thu, 29 May 2026 00:00:00 GMT</pubDate> <category>Developer Tools</category> <description>Learn how XML attributes map to @_ keys, how repeated elements become arrays, and why values stay strings in any XML-to-JSON conversion.</description> <guid isPermaLink="true">https://go-tools.org/blog/xml-to-json-guide</guid> </item>
RSS 2.0のitemエレメントです。guid要素には isPermaLink 属性があるため、guid のJSON出力は "@_isPermaLink": "true" と "#text": "https://go-tools.org/blog/xml-to-json-guide" を持つオブジェクトになります — 属性と要素のテキスト内容が兄弟キーとして共存します。他のすべての要素はテキスト内容のみを持ち、直接文字列値に変換されます。
使い方
- 1
XMLを貼り付ける
上の入力フィールドにXMLを入力または貼り付けてください。「サンプルを読み込む」をクリックして、設定ファイル、サイトマップの断片、RSSアイテムなどのサンプルを試すこともできます。
- 2
ライブJSON出力を確認する
JSONは即座に出力パネルに表示されます。属性は @_ プレフィックス付きキーになり、混合要素のテキスト内容は #text になり、繰り返す兄弟要素は配列になります。必要に応じてインデント(2または4スペース)を調整してください。
- 3
コピーまたはダウンロード
「コピー」をクリックしてJSONをクリップボードに取得するか、「ダウンロード」をクリックしてアプリケーション、API、またはデータパイプラインにすぐ使える.jsonファイルとして保存してください。
よくある変換ミス
値が文字列のままであることを忘れる
コンバーターは型の強制変換を行いません。ダウンストリームコードがJSON数値を期待しているがXMLに数値文字列が含まれている場合は、変換後に明示的に強制変換する必要があります。JavaScriptの == や算術演算子による暗黙の文字列から数値への変換は危険です — 常に parseInt()、parseFloat()、Number() を意図的に使用してください。
// XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" } ← string, not number
// Dangerous: comparing as-is
if (config.timeout > 25) { ... } // "30" > 25 coerces, but fragile // XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" }
// Safe: explicit coercion where you know the type
if (parseInt(config.timeout, 10) > 25) { ... } 単一アイテムと配列の形状の不一致
// XML with one item: <root><item>a</item></root>
// JSON: { "root": { "item": "a" } } ← string, not array
result.root.item.forEach(i => console.log(i)); // TypeError: not a function // Normalize to array regardless of count const items = [].concat(result.root?.item ?? []); items.forEach(i => console.log(i)); // safe for 0, 1, or many
混合コンテンツ:テキストと #text キー
要素が属性とテキスト内容の両方を持つ場合、テキストは #text に格納されます。テキスト値にプレーン文字列としてアクセスするとオブジェクトが返されます。属性が考えられる場合は、要素値が文字列か #text キーを持つオブジェクトかを常に確認してください。
// XML: <price currency="USD">29.99</price>
// JSON: { "price": { "@_currency": "USD", "#text": "29.99" } }
const amount = result.price; // { "@_currency": "USD", "#text": "29.99" }, not "29.99" // Handle both plain string and @_/#text object const raw = result.price; const amount = typeof raw === 'object' ? raw['#text'] : raw; // "29.99"
整形されていないXML入力
コンバーターは整形されたXMLを必要とします。整形エラーの一般的な原因:テキスト内容内のエスケープされていない &(& を使用)、タグの不一致(
<!-- Unescaped & — well-formedness error --> <query>name = 'Alice' & role = 'admin'</query>
<!-- Escaped & — valid XML --> <query>name = 'Alice' & role = 'admin'</query>
強制変換による先頭ゼロ値の破損
このツールは型の強制変換を行わないため先頭ゼロを保持します。強制変換を行うライブラリ(一部のJSONスキーマバリデーター、ORMマッパー)でJSONを後処理すると、先頭ゼロが失われる可能性があります。スキーマで常にフィールド型を文字列として明示的に宣言してください。
// XML: <zipCode>01234</zipCode>
// This tool outputs: { "zipCode": "01234" } ← correct
// But if a downstream schema coerces:
// { zipCode: z.number() } → 1234 ← leading zero lost // Declare ZIP codes and other padded identifiers as strings
// { zipCode: z.string() } → "01234" ← correct よくある使用場面
- SOAP / レガシーXML APIの消費
- 銀行、保険、物流などのレガシーエンタープライズサービスはXMLを返すSOAP APIを公開していることが多いです。レスポンスをJSONに変換して、モダンなJavaScriptツールを使ってデータを扱ったり、ドキュメントデータベースに保存したり、REST APIコンシューマーに転送したりできます。
- RSSおよびAtomフィードの処理
- RSS 2.0とAtom 1.0フィードはXMLです。フィードXMLをJSONに変換して、XMLパーシングライブラリの依存なしに、フィードアグリゲーター、コンテンツパイプライン、通知システム向けにタイトル、リンク、公開日、説明を抽出できます。
- サイトマップファイルの解析
- sitemap.xmlファイルはサイトのURLとメタデータを列挙します。サイトマップをJSONに変換してURLカバレッジを分析したり、クロールキューを構築したり、環境間でサイトマップを比較したり、リンクチェッカーやSEO監査ツールにURLを渡したりできます。
- 設定ファイルの変換
- 多くのエンタープライズシステム(Spring、Maven、Ant、JBoss、Tomcat)はXML設定ファイルを使用します。分析、移行スクリプト、ドキュメント生成、またはJSONをネイティブに扱うツールへのインポートのためにJSONに変換できます。
- モバイルとAndroid開発
- Androidリソース、レイアウトファイル、AndroidManifest.xmlはすべてXMLです。分析スクリプト、自動監査、または宣言されたパーミッション、アクティビティ、リソース値に関するドキュメント生成のためにJSONに変換できます。
- データ移行とETL
- エンタープライズシステム(ERP、CRM、給与)からのデータエクスポートはXMLで届くことが多いです。ETLパイプラインの最初のステップとしてJSONに変換し、MongoDB、Firestore、またはREST APIなどのJSONネイティブなデータストアにデータをロードします。
技術的詳細
- XML解析にブラウザDOMParserを使用
- XML入力はブラウザのネイティブDOMParserを「text/xml」MIMEタイプで解析します — SVGとXHTMLをレンダリングするのと同じエンジンです。XML 1.0に完全準拠し、整形エラーを行と列の情報とともに報告します。このアプローチはサードパーティの依存なしに名前空間、CDATAセクション、処理命令、エンティティ参照を正しく処理します。
- 再帰的なDOM to JSONシリアライゼーション
- 解析後、ツールはDOMツリーを再帰的に走査します。要素ノードはJSONオブジェクトになります。属性は @_ プレフィックス付きキーになります。テキストのみの要素はプレーンな文字列値になります。属性とテキスト内容の両方を持つ要素はテキスト内容用の #text キーを持ちます。同名の兄弟要素は収集されてJSON配列として出力されます。要素間の空白のみのテキストノードは廃棄されます。
- 型の強制変換なし — 文字列の保持
- すべての属性値とテキスト内容はJSON出力に文字列として書き込まれます。parseInt、parseFloat、ブール値の解析は適用されません。これは先頭ゼロ値、精度に影響する小数、ブール値に見える文字列のサイレントなデータ破損を防ぐための意図的な設計上の選択です。型変換が必要な場合は、ダウンストリームコードで明示的に適用する必要があります。
- 100%ブラウザベース — アップロードなし、サーバーなし
- すべての処理はブラウザのJavaScriptエンジンで実行されます。いかなる時点でもデータはネットワーク経由で送信されません。200KBを超える入力はライブモードから手動モードへ自動的に切り替わります(明示的な「変換」クリックが必要)。ブラウザのレスポンスを維持し、重いDOM走査中にメインスレッドがブロックされるのを防ぐためです。
ベストプラクティス
- まずXMLの整形性をバリデートする
- XMLソースが手書きまたは不正な出力を生成することがあるシステムから来ている場合は、変換前にバリデートしてください。XMLフォーマッター の「バリデート」ボタンを使用してXMLが整形されていることを確認し、問題の正確なエラー位置を取得してください。
- 1つまたは複数のフィールドを配列に正規化する
- XMLスキーマが同名の子要素を1つまたは複数許可する場合、JSON出力は1要素でオブジェクトになり、複数要素で配列になります。常にコンシューマコードでこれらのフィールドを正規化してください:const items = [].concat(result.items ?? []) — これはゼロ、1つ、または複数の場合に安全でTypeErrorを防ぎます。
- 明示的かつ選択的に型変換を適用する
- このツールはすべての値を文字列として保持するため、型変換が必要な特定のフィールドに対してコードで意図的に適用してください。既知の整数フィールドに parseInt(val, 10) を使用するのは安全です。Number(val) で広く変換を適用すると先頭ゼロ値、空文字列、精度に影響する小数が破損する可能性があります。
- 要素値にアクセスする際は #text を確認する
- 要素がペイロードによっては属性を持つ場合があるとき、そのJSON値はプレーン文字列(属性なし)または @_ キーと #text キーを持つオブジェクト(属性あり)のどちらかになります。堅牢なアクセサーを書いてください:const val = typeof node === 'object' ? node['#text'] : node。このパターンは両方の形状を処理し、サイレントな undefined 値を避けます。
- 無損失なXML作業にはXMLフォーマッターを使用する
- XML to JSON変換はコメント、処理命令、名前空間のセマンティクスを廃棄します。すべてのXMLコンテンツを完全に保持する必要がある場合は、XMLフォーマッター を使用して損失なしに整形・圧縮・バリデートしてください。JSONネイティブなコンテキストでデータを扱う必要がある場合のみJSONに変換してください。
よくある質問
このツールを使うとXMLデータがサーバーに送信されますか?
XML属性はJSON出力でどのようにマップされますか?
コンバーターは数値やブール値を強制変換しますか?
繰り返し要素(同名の兄弟要素)はどう処理されますか?
XMLからJSONへの変換は無損失ですか?
JSONをXMLに戻すには?
XML名前空間はどうなりますか?
なぜ 0123 は 123 ではなく "0123" になるのですか?
このツールとXMLフォーマッターの違いは何ですか?
ファイルサイズの制限はありますか?
コンバーターはCDATAセクションを処理しますか?
関連ツール
すべてのツールを見る →Base64エンコーダー&デコーダー
エンコーディングとフォーマット
Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。
CSV to JSON 変換ツール
エンコーディングとフォーマット
CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。
JSON Diff(差分)
エンコーディングとフォーマット
2つのJSONファイルをブラウザで即座に比較・差分確認。サイドバイサイドのハイライト表示、RFC 6902 JSON Patch出力、タイムスタンプやIDなどのノイズフィールドを無視。100%プライベート、アップロード不要。
JSONフォーマッター&バリデーター
エンコーディングとフォーマット
無料オンラインJSON整形ツール。ブラウザ上でJSONのフォーマット、構文検証、圧縮を即座に実行。エラー検出、ワンクリックコピー対応。データは端末外に送信されず、100%プライバシー保護。
JSON Schema バリデーター
エンコーディングとフォーマット
JSON を任意の JSON Schema に対してブラウザで即座に検証。Draft 2020-12 / 2019-09 / Draft-07 をサポートし、エラーメッセージは JSON Pointer パスで正確に位置を示します。100% プライベート、アップロード不要、無料。
JSON to CSV 変換ツール
エンコーディングとフォーマット
JSONをブラウザ内で即座にCSVに変換。RFC 4180・Excel-EU・TSV・Pipeプリセット対応。ネスト平坦化または文字列化。100%プライベート、アップロード不要。