NDJSON を XML に変換

NDJSON を XML にすると、1 行 1 オブジェクトの形式が、`<root>` の下に `<item>` が並ぶ XML になります。JSON や CSV と違い、入れ子になった構造はそのまま維持されます。ただし、キーの名前が日本語だと、そのままではタグ名にできません。処理はあなたのブラウザーの中で完結します。

  • 処理される場所 ブラウザーの中です。ファイルがアップロードされることはありません。
  • 可逆 何も捨てられません。XMLはNDJSONが持っていたものをそのまま保持します。
  • ファイルサイズの上限 1ファイルあたり100MBまで。無料、アカウント不要です。

一度に100ファイルまで。フォーマットが混ざっていても構いません。

NDJSON から XML へ来る理由

NDJSON はログ収集やストリーム処理でよく使われる、1 行が 1 つの JSON オブジェクトという形式です。読みやすく、行単位で追記できる一方、XML でしかデータを受け付けない古い業務システムや連携先には、そのままでは渡せません。

ここでの変換は、その受け渡しの橋渡しです。ログの分析結果や API から集めたレコードを、XML を要求する仕組みに渡すときに使います。

1 行が 1 つの item 要素になる

NDJSON は改行区切りで JSON オブジェクトが並んだものなので、1 行がそのまま 1 つの `<item>` 要素になります。行全体を包む `<root>` タグが自動的に付き、その下に `<item>` が行の数だけ並びます。

これは、単一の JSON オブジェクトを変換したときとは違う形です。単一のオブジェクトなら、その中の 1 つのキーがそのままルート要素の名前になりますが、NDJSON には最初からその「1 つのキー」がないため、common な `item` の繰り返しになります。

入れ子の構造はそのまま残る

CSV や TSV への変換では、入れ子になったオブジェクトはドット区切りの列名に平らにされますが、XML はもともと入れ子を表現できる形式なので、その処理は行われません。オブジェクトの中のオブジェクトは、要素の中の要素としてそのまま出てきます。

配列も同じ名前のタグの繰り返しとして書き出されます。`{"tags":["a","b"]}` は、`tags` というタグが 2 回、それぞれ `a` と `b` を中身にして並ぶ形になります。

キー名は英数字以外がアンダースコアに置き換わる

XML の要素名には使える文字に制約があり、ここでの書き出しはアルファベット、数字、アンダースコア、ピリオド、ハイフン以外の文字をすべてアンダースコアに置き換えます。数字で始まる名前の先頭にもアンダースコアが付きます。

**この制約は日本語のキー名に強く効きます。**`{"名前":"田中"}` というレコードのキー `名前` は、2 文字とも対象の文字集合に入っていないため `__` という、何を表しているのか分からないタグ名になってしまいます。日本語のキーを含む NDJSON を変換する予定があるなら、変換前にキー名を英字に直しておくか、変換後にタグ名を手直しする前提で進めてください。

値の書かれ方

数値と真偽値は文字列としてそのままタグの中身になります。`null` は中身が空のタグとして書かれ、`<value></value>` のような形になります。

文字列の中に含まれる `&` や `<` などの記号は、XML として正しく読めるように自動でエスケープされます。手で直す必要はありません。

壊れた行があると、その行番号を教えてくれる

NDJSON は 1 行 1 オブジェクトが前提なので、どこかの行が正しい JSON になっていないと、その行番号を含んだ具体的なメッセージで失敗を知らせます。ファイル全体のどこが悪いのか探し回る必要がありません。

空の行は無視されるので、行の間に空行が混じっていても問題にはなりません。

ルート要素の名前を選ぶことはできない

書き出される XML のルート要素は常に `root`、その下の繰り返しは常に `item` です。これらの名前を自分で指定するオプションはありません。

相手のシステムが特定のルート要素名を要求する場合は、変換後に手作業でタグ名を書き換える必要があります。

プライバシーとまとめての変換

処理はすべてブラウザーの中で行われ、ログやレコードがどこかにアップロードされることはありません。1 ファイルあたり 100 MB まで、1 度に 100 個までまとめて置けます。

この変換に専用の重いエンジンは必要なく、他のデータ変換と同じ軽い仕組みを共有しています。

NDJSON を XML に変換する手順

  1. お手元の NDJSON ファイル をこのページに落とすか、押してファイルを選んでください。
  2. 変換先に XML を選びます。変換はブラウザーの中で行われ、ファイルはアップロードされません。
  3. できあがった XML ファイル をダウンロードします。

NDJSON と XML——何が変わるか

NDJSONとXMLの比較
NDJSONXML
正式名称Newline-Delimited JSONExtensible Markup Language
拡張子.ndjson, .jsonl.xml
メディアタイプapplication/x-ndjsonapplication/xml
最初の公開20131998
発行元W3C
仕様XML 1.0
ライセンスオープン標準オープン標準
現在の位置づけ現行現行
ブラウザで開けるか対応なしすべてのブラウザ
代わりに検討される形式JSON, CSVJSON, YAML

残るもの

失われるものはありません。NDJSON も XML も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。

結果を開く

XML は今のブラウザーならどれでも開けます。NDJSON はそこまでも届きません。ファイルがウェブページや申込フォームへ向かうのであれば、たいていはそれがこの変換の理由のすべてです。

開くプログラムが重なりません。NDJSON はjqとpandasで、XML はVisual Studio CodeとoXygen XML Editorで開きます。結果を渡す相手には後者のどれかが要ります。

どちらの形式が何のためのものか

XML は W3C の形式で、1998 年から使われています。規定は XML 1.0 です。Visual Studio CodeとoXygen XML Editorがこの形式を読めます。

XML は 1998 年、NDJSON は 2013 年に登場しました。人に渡すならたいてい古いほうが安全で、新しいほうは同じ仕事をより少ないバイト数で片づけます。

NDJSON から XML:よくある質問

NDJSON ファイル はどこかにアップロードされますか。

いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。

NDJSON から XML への変換は無料ですか。

はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。

NDJSON を XML に変換すると品質は落ちますか。

いいえ。XML は同じ内容を何も捨てずに保持できるので、結果は品質の点で元のファイルと同じです。

NDJSON から XML への変換は可逆ですか。

失われるものはありません。NDJSON も XML も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。

これらのフォーマットについて