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