流行しているからといってXMLが使用されているように感じることもあります。
いくつかの強み:
私の頭の上からいくつかを挙げます。
.csvファイルは、データが厳密に表形式であり、その構造がわかっている場合に適しています。さまざまなレベルのデータ間でリレーションシップを開始するとすぐに、XMLがうまく機能する傾向があります。これは、ネストを行うだけで(スキーマがなくても)リレーションシップが明確になるためです。
XMLは、他の多くの人々がすでに言及している多くの利点のためにデフォルトになりました。したがって、質問は「CSVがXMLよりもいつ、なぜ望ましいのか」になります。
次の場合は、CSVがXMLよりも望ましいと感じます。
CSVは最初の2つのポイントが真である場合に完全に使用でき、データセットが大きくなるほど重要になるパフォーマンス上の利点があります。
それぞれが6つのテキストフィールドを持つ〜8000レコードをロードするクイックテストを行いました。 XMLの読み込みと解析には約8秒かかりました。 CSVの読み込みには1秒もかかりませんでした。
多くの場合、XMLのオーバーヘッドはそれだけの価値がありますが、星が揃うと、CSVがより理にかなっています。
CSVは、ある情報に関連する一連の値があり、各フィールドの値を常に保存することがわかっている場合に役立ちます。
XMLには、自己記述的なデータ(タグ)と階層を持つという利点があります。これにより、データの保存方法の柔軟性が大幅に向上します。
ネット上で興味深いパフォーマンステストを見つけました。 XMLの機能が必要ない場合のXMLの欠点の神の例。
「スティーブンの実験を別の角度から試しました。ExcelXPスプレッドシートに1桁の数字を入力し、XMLとコンマ区切りテキストファイル(CSV)の両方で保存しました。次に、WinZipで両方を圧縮し、Excelで両方を開きました。
XMLファイルは840MB、CSV 34MB-2,500%の差が圧縮され、XMLファイルは2.5MB、CSV 0.00015MB(150KB)-1,670%の差でした。
同様に劇的なのは、ファイルを解凍してExcelスプレッドシートとしてレンダリングするのにかかった時間です。XMLファイルで約20分かかりました。 CSVには1分かかりました。2,000%の違いです。」
XMLとCSVを使用して、はるかに複雑な階層などと構造を持つことができます。それははるかに柔軟性を提供します。
もちろん、それはファッショナブルで時折流行ります。それはすべてアプリケーションに依存します。 XMLの構成ファイルは、解析しやすいため好まれます。一方、DataGridViewまたはデータベースダンプにはCSVファイルを使用します。
これ 毎日のWTF:XML vs CSV選択肢は明らかです はあなたの決定を助けるでしょう;)
データが非構造化(不明なスキーマ)であり、人間が読み取る場合、CSVよりもXMLの方が適しています。
ほぼ間違いなく、データに主にテキストが含まれていない限り、CSVは人間が消費するためのものでもあります。
関連するのは、データが2次元または3次元の場合です。 CSVは2次元のテキストに最適であり、その冗長性により、XMLは3次元のデータでうまく機能します。
XMLの「標準性」全体は誇張されており、文字どおりに解釈すべきではありません。 XMLには大きな技術的な問題があり、多くのソリューションは特にエレガントではなく、多くの場合有用です。
<tags>
を使用してマークアップ言語を作成する昔からありふれた方法は、標準として特に有用ではありません。明確にするために、XMLはおそらく現在使用されているデータ交換の90%の誤った選択です。これらの使用は上記の仮定の一部またはすべてを破るためです。
他の回答に加えて、XMLを使用すると、ドキュメントが含まれる文字セットを指定できます。
XMLの最大の利点は、構文解析機能と、ほとんどのXMLライブラリですぐに使用できる厳密な検証であることです。整形式でわかりやすいエラーメッセージ(xyz、行yで閉じられていないxyz)の主張は、CSVファイルのエラーのために、壊れた値、または不明な動作を探している場合と比較して、本当に役立ちます。
いつかあなたや誰か(短気で大規模な銃のコレクションを持っている人)がCSVデータでエラーを見つけなければならないかもしれないので、XML(またはJSON)を使用すると言います。
そう、私は読みやすさを言っています、他の人のことを忘れないでください!彼はあなたのことを考えているかもしれません。
関連する答えについてコメントするほどの評判はありませんが、誰かがXMLを圧縮してcsv形式とサイズを同等にする方法を提案しました。これは事実ですが、XML圧縮はあなたに噛み付くこともあります。ポイント間でXMLデータを転送しているときに失敗した場合、XMLを読み取って何が間違っているのかを把握できるのは素晴らしいことです。 XMLが圧縮されていて転送が失敗した場合、XMLを解凍して内容を調べることができない場合があります。言い換えれば、XMLを圧縮すると、人間が読みやすいという利点がなくなります。
CSVは通常、XMLよりも2倍小さいので、物事を動かしたい場合はより軽量です
XMLは標準であり、CSVの異なるOSのバージョンの影響を受けません
XMLは、タグ名と属性名で提供されるメタデータでデータにタグを付ける方法を提供しますが、CSVは提供しません。これに構造化された階層を定義する機能を組み合わせると、データのみが提供されるとXMLが理解しやすくなりますが、CSVでは各値の解釈方法を説明する付属のツールまたはドキュメントが必要です。
構造化された、人間が読める、編集しやすい、検証、解析可能性、変換可能性、タイピング、名前空間、その背後にある強力なライブラリーは、すべて多くの理由の中にあります。
何よりも標準的ですが。
私にとって重要なのはそれだけです。
確かに、CSVでエスケープするための準標準的な方法(つまり、「Excelが行う方法」)があり、自分で書くのは必ずしも難しくありませんが、時間がかかります。そして、帯域外の文字エンコーディングについて暗黙のうちに同意する必要があります。しかし、それは非常に単純なので、人々はそれを自分で書き込もうとし、常に#2または#3を台無しにします。
JSONも#2と#3を満たし、満足のいく#1に近づいています。また、少なくともドキュメント以外のファイルについては、間違いなく簡単です。驚くことではありませんが、社内外でますます使用しています。
XMLのもう1つの例:XMLの[〜#〜] x [〜#〜]は[〜#〜] e [〜 #〜]xtensible(私は知っているが、実際にはニーモニックではない:-P)。つまり、XML名前空間メカニズムの助けを借りて、好きな2つのXML言語を結合し、それらをsameドキュメントで結合できます。 CSVが1つしかない(無数の区切り文字スタイルをカウントしない)ため、XMLは非常に多くの複雑さをモジュール方式で処理できます。
ただし、これはCSVの利点です。表形式のデータが本当にある場合、XML構文はほとんどの場合過剰です。
また、いくつかのcvsジェネレーター/パーサーは、一般的なテキストデータでは非常に困難であることもわかりました。キャリッジリターンやコンマや引用符などが多く含まれる長いテキスト文字列は、cvsの操作に関して非常に困難です。
SSMSは、楽しみのためにcsvを切り捨てることを好みます。