XML→JSON変換
XMLドキュメントをきれいなJSONに変換します。
ブラウザ内で動作します。入力した内容はどこにも送信されません。
- 属性を保持
- 繰り返しタグを配列に
- エラー箇所を正確に表示
XMLをJSONに変換する方法
- XMLを貼り付けるかアップロードします。
- チェックボックスで属性を含めるかどうかを選びます。
- JSONをコピーまたはダウンロードします。
例:XMLを入力、JSONを出力
| XML | JSON |
|---|---|
| <name>Sam</name> | {"name":"Sam"} |
| <item id="5">Widget</item> | {"item":{"@_id":"5","#text":"Widget"}} |
| <tag>a</tag><tag>b</tag> | {"tag":["a","b"]} |
XML→JSONが保持するもの
- チェックボックスがオンの場合、属性は@_で始まるキーとして保持されます。
- 要素が属性とテキストの両方を持つ場合、テキスト内容は#textキーの下に保持されます。
- 繰り返される兄弟タグは、ドキュメント内の順序通りにJSON配列になります。
- 007のように先頭にゼロが付く数値はテキストのまま保持され、IDが変わることはありません。
不正なXMLのよくある原因
- 閉じられていない、または一致しないタグ。
- &や<と書くべき箇所にある裸の&や<。
- 整形式のXMLはルート要素を1つしか許可しないため、トップレベルに2つの要素がある場合。
XML→JSONが役立つ場面
- 古いSOAP APIのレスポンスを、最新のJSONベースのフロントエンドで読み込む。
- スクリプトでループ処理できるように、RSSやAtomフィードをJSONに変換する。
- XMLしか扱えないエンタープライズソフトから書き出された設定ファイルを調べる。
- 本格的なインポートパイプラインを書く前に、レガシーシステムの書き出しの中身を確認する。
XML→JSONのFAQ
XMLの属性はどうなりますか?
@_で始まる名前のフィールドとして保持され、id="5"は"@_id": "5"になります。「属性を含める」をオフにすれば除外されます。
繰り返し要素はどう処理されますか?
同じタグ名を持つ兄弟要素はJSON配列になります。1回しか現れないタグは単一の値のままです。
数値は変換されますか?
42のような単純な数値はJSONの数値になります。007のように先頭にゼロが付く値はテキストのままとなり、コードやIDが変わってしまうことを防ぎます。
XMLが不正だと表示されるのはなぜですか?
多くの場合、タグが閉じられていない、終了タグが一致しない、または&と書くべき箇所に裸のアンパサンドがあることが原因です。エラーには行と列が示されます。
XMLの名前空間は保持されますか?
名前空間の接頭辞はタグ名の一部として残り、例えばns:idはそのままns:idという名前のキーになります。このツールは名前空間URIを別の何かに解決することはありません。
<br/>のような自己終了タグはどうなりますか?
空文字列の値になります。より長い<br></br>と書いた場合と同じ結果です。
XMLのコメントはどうなりますか?
削除されます。JSONにはコメント構文がないため、要素のデータだけが変換されます。
DOCTYPEを持つXMLファイルも変換できますか?
はい、DOCTYPEは読み取られますが、XMLの検証を制御するだけで引き継ぐべき独自のデータを持たないため、JSON出力には含まれません。