JSON-XMLコンバーター - JSON/XML相互変換 オンライン
JSONとXML形式を双方向で変換します。属性、名前空間、フォーマット設定が可能。100%クライアントサイド処理、データがサーバーに送信されることはありません。
よくある質問
JSON-XMLコンバーターとは何ですか?
JSON-XMLコンバーターは、JSON(JavaScript Object Notation)とXML(eXtensible Markup Language)形式間でデータを変換するツールです。JSONは中括弧、角括弧、キーバリューペアを使用し、XMLは属性付きの階層的タグを使用します。両方とも構造化データを表現しますが、XMLは属性、名前空間、CDATAセクションなど、JSONに直接対応するものがない追加機能をサポートしています。このコンバーターは、属性用の@_プレフィックスやテキストノード用の#textなどの規約を使用して、可能な限り多くの情報を保持しながら双方向変換を可能にします。
このJSON-XMLコンバーターの使い方は?
ラジオボタンで変換方向を選択します:JSON → XMLまたはXML → JSON。入力エリアにデータを貼り付けるか、Sampleボタンをクリックしてサンプルデータを読み込みます。入力するとリアルタイムで自動変換されます。必要に応じてオプションを設定してください:属性プレフィックス、XML宣言、ルート要素名、インデント。Copyボタンで結果をコピー、Downloadでファイル保存できます。Swapボタンで方向を素早く切り替えられます。
データは安全ですか?サーバーに送信されますか?
データは100%安全で、ブラウザの外に出ることはありません。このコンバーターはクライアントサイドJavaScriptで完全に動作するfast-xml-parserライブラリを使用しています。データはサーバーに送信されず、データベースに保存されず、どこにも記録されません。すべての解析、検証、変換はお使いのデバイス上でローカルに行われます。インターネット接続を切断しても動作することで確認できます。
変換時にXML属性はどのように処理されますか?
XML属性は設定可能なプレフィックスを使用してJSONプロパティにマッピングされます。デフォルトのプレフィックスは@_で、<book category="fiction">のようなXML属性はJSONで{"@_category": "fiction"}になります。必要に応じてプレフィックスを@、-、$に変更できます。JSONからXMLに変換する際、設定されたプレフィックスを持つプロパティは自動的にXML属性に変換されます。
変換時にXML名前空間はどうなりますか?
デフォルトでは、名前空間プレフィックスはJSON出力に保持されます(例:<soap:Envelope>は{"soap:Envelope": ...}になります)。「名前空間を削除」オプションを有効にすると、名前空間プレフィックスが削除されてJSON出力がシンプルになります。名前空間の削除は不可逆操作です — JSONをXMLに戻すと名前空間情報が失われます。ロスレスな往復変換が必要な場合は名前空間を保持してください。
XMLに変換する際になぜルート要素が必要ですか?
XMLには正確に1つのルート要素が必要です。JSONに1つのトップレベルキーがある場合、そのキーがルート要素になります。しかし、JSONが配列であったり複数のトップレベルキーがある場合、コンバーターは出力をルート要素でラップします(デフォルト名:root)。オプションでルート要素名をカスタマイズできます。これはツールの制限ではなく、XMLの基本的な要件です。
JSON-XML変換の制限事項は何ですか?
フォーマットの根本的な違いにより、JSONとXML間の変換は常に完全にロスレスではありません。主な制限:(1) JSONにコメント構文がないためXMLコメントが失われます;(2) XML処理命令は通常削除されます;(3) XML混合コンテンツは#text規約が必要です;(4) JSONキーの順序が保持されない場合があります;(5) XML CDATAセクションはJSONで通常のテキストに変換されます。ほとんどの実用的なケースでは、これらの制限が問題になることはほとんどありません。
コード例
// JSON to XML conversion using fast-xml-parser
const { XMLParser, XMLBuilder, XMLValidator } = require('fast-xml-parser');
function jsonToXml(jsonString) {
const parsed = JSON.parse(jsonString);
const builder = new XMLBuilder({
attributeNamePrefix: '@_',
textNodeName: '#text',
format: true,
indentBy: ' ',
ignoreAttributes: false,
});
return '<?xml version="1.0" encoding="UTF-8"?>\n' + builder.build(parsed);
}
function xmlToJson(xmlString) {
const validation = XMLValidator.validate(xmlString);
if (validation !== true) {
throw new Error(`Line ${validation.err.line}: ${validation.err.msg}`);
}
const parser = new XMLParser({
ignoreAttributes: false,
attributeNamePrefix: '@_',
textNodeName: '#text',
parseAttributeValue: true,
});
return JSON.stringify(parser.parse(xmlString), null, 2);
}
// Example
const json = '{"book":{"@_id":"1","title":"Hello"}}';
console.log(jsonToXml(json));
// <?xml version="1.0" encoding="UTF-8"?>
// <book id="1"><title>Hello</title></book>