このツールの動作
各要素がキーになり、その子が値になります。
<user id="1"><name>Ada</name></user>
{ "user": { "name": "Ada", "@_id": "1" } }
モデルが食い違う三か所
XML と JSON は同じ形を記述しません。どの変換器も決めるほかなく、以下がその決めごとです。
属性
@_ を付けたキーになります。JSON のメンバーは一種類ですが、XML には属性と要素があり、同じ名前を持てます。<user id="1"><id>2</id></user> には id という別々のものが二つあります。接頭辞がそれを分けます。不要なら切り替えで落とせます。
テキストと属性を同時に持つ要素では、テキストは #text の下に入ります。
繰り返し
<item> が一つならオブジェクト、二つなら配列です。
<r><i>1</i></r> → { "r": { "i": 1 } }
<r><i>1</i><i>2</i></r> → { "r": { "i": [1, 2] } }
これは直せる欠陥ではありません。その要素が繰り返し得るかどうかは XML 文書のどこにも書かれていません。 知っているのはスキーマだけです。コードがリストを前提とするなら、受け取った時点で正規化してください。
混在内容
これは JSON が表現できないもので、はっきり言っておくべき点です。
<p>こんにちは <b>世界</b> また</p>
こんにちは が <b> の前にあり、また が後ろにあったことを、JSON は表せません。テキストの断片は #text の下にまとめられ、要素に対する位置が失われます。間の空白も同様です。大事なのがテキストであるなら——記録ではなく文書であるなら——変換せず、XML フォーマッターをお使いください。
型
<a>1</a> は数値 1 になります。<a>007</a> は文字列 "007" になります。先頭のゼロは通常、郵便番号や口座番号であり、7 と読めばそれを失うからです。二十桁の識別子も文字列のままです。JSON の数値では丸められてしまいます。
データではないもの
XML 宣言と処理命令は落とします。これらは文書についての記述であって、文書の内容ではありません。根要素の隣に並ぶ ?xml というキーは、あなたが求めた情報ではありませんでした。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。