Когда и почему XML предпочтительнее CSV?[закрыто]

StackOverflow https://stackoverflow.com/questions/1820129

  •  10-07-2019
  •  | 
  •  

Вопрос

иногда кажется, что XML использовался только потому, что это было модно.

Это было полезно?

Решение

Некоторые сильные стороны:

  • Вы можете сверить XML-данные с XSD
  • Вы можете легко предоставить контракты (как XSD) другим сторонам, которые должны либо создавать / использовать XML-данные, без их буквального описания
  • Вы можете иметь отношения "один ко многим" в многоуровневом представлении XML-данных
  • XML, возможно, более удобочитаем, чем CSV
  • XML изначально поддерживается .net framework

Чтобы назвать некоторые из них, которые приходят мне в голову.

Другие советы

.csv файлы хороши, когда ваши данные строго табличные и вы знаете их структуру. Как только вы начинаете иметь отношения между различными уровнями ваших данных, xml начинает работать лучше, потому что отношения можно сделать очевидными (даже без схем), просто вложив их.

XML стал стандартным из-за множества преимуществ, о которых уже упоминали многие другие. Таким образом, вопрос действительно становится &. Когда и почему CSV предпочтительнее XML? & Quot;.

Я чувствую, что CSV предпочтительнее XML, когда: - вы загружаете простые табличные данные - вы контролируете как генерацию, так и потребление файла данных - набор данных большой

CSV отлично подходит для использования, если первые 2 балла верны, и имеет преимущество в производительности, которое тем значительнее, чем больше набор данных.

Я сделал быструю тестовую загрузку ~ 8000 записей, каждая с 6 текстовыми полями. Загрузка и анализ XML заняли ~ 8 секунд. Загрузка CSV заняла менее 1 секунды.

Издержки XML во многих случаях стоят того, но когда звезды совпадают, CSV имеет больше смысла.

CSV полезен, когда у вас просто есть серия значений, которые относятся к некоторой части информации, и вы знаете, что вы всегда будете хранить значения для каждого поля.

Преимущество XML заключается в наличии самоописываемых данных (тегов) и иерархии, что дает вам гораздо большую гибкость в способе хранения данных.

Вы можете иметь гораздо более сложную иерархию и т. д. и иметь структуру XML и CSV. Это предлагает намного больше гибкости.

Я нашел интересный тест производительности в сети.Приведите пример недостатков XML, когда возможности XML не нужны.

"Я попробовал эксперимент Стивена под другим углом.Я заполнил электронную таблицу Excel XP однозначным числом, сохранил ее как в формате XML, так и в текстовом файле с разделителями через запятую (CSV).Затем я сжал оба с помощью WinZip, а затем открыл оба с помощью Excel.Вот что я нашел:

Размер XML-файла составил 840 МБ, CSV - 34 МБ - разница в 2500% Сжатый XML-файл составил 2,5 МБ, CSV - 0,00015 МБ (150 КБ) - разница в 1670% .

Не менее драматичным является время, которое потребовалось, чтобы распаковать и передать файлы как электронная таблица Excel :Работа с XML-файлом заняла около 20 минут;CSV-файл занял 1 минуту - разница в 2000% ".

http://www.xml.com/pub/a/2004/12/15/deviant.html

Конечно, это модно и иногда приятно. Все зависит от вашего приложения. Я предпочитаю файлы конфигурации в XML, потому что их легко анализировать. Принимая во внимание, что я использую файлы CSV для DataGridView или дампов базы данных.

Этот Ежедневный WTF: XML против CSV Выбор очевиден поможет вам принять ваше решение ;)

XML предпочтительнее, чем CSV, когда данные неструктурированы (неизвестная схема) и будут читаться человеком.

Возможно, если данные не содержат преимущественно текст, CSV также предназначен для потребления человеком.

Также важно, если ваши данные 2 или 3 измерения. CSV лучше всего подходит для двухмерного текста, а благодаря многословности XML хорошо работает с трехмерными данными.

Весь & стандарт; " XML является гиперболой и не должен восприниматься буквально. У XML действительно есть огромные технические проблемы, и многие решения не особенно элегантны или во многих случаях полезны:

<Ол>
  • Он использует текст для указания своей собственной кодировки текста (курица и яйцо?)
  • Ни один из наиболее распространенных языков схемы для XML не работает особенно хорошо.
  • Древний и обычный способ создания языков разметки с использованием <tags> не особенно полезен в качестве стандарта.
  • XML пытается задним числом создать более мощные языки разметки, такие как основанные на SGML, создавая беспорядок несовместимого наследия.
  • Еще предстоит определить, могут ли escape-последовательности XML-текста работать для чего угодно, кроме самых простых случаев (т. е. дружественных данных).
  • Для ясности, XML, вероятно, является неправильным выбором для 90% обмена данными, для которого он используется в настоящее время, поскольку эти применения нарушают некоторые или все вышеупомянутые предположения.

    В дополнение к другим ответам XML позволяет вам указать, в каком наборе символов находится документ.

    Я обнаружил, что величайшими преимуществами XML являются функциональность синтаксического анализа и строгая проверка, которая поставляется с большинством библиотек XML. Требование правильного формирования и легкого для понимания сообщения об ошибке (xyz не закрыт в строке x, столбце y) - реальная помощь по сравнению с поиском неработающих значений или неизвестного поведения из-за ошибки в файле CSV.

    CSV более легок, если вы хотите что-то изменить, так как обычно он в 2 раза меньше XML

    XML является стандартным и не будет подвержен влиянию версии CSV для других ОС

    У меня недостаточно репутации, чтобы комментировать соответствующий ответ, но кто-то предложил сжать XML, чтобы получить паритет размера с форматами csv. Хотя это действительно так, сжатие XML может иногда вернуться к вам. Если вы переносите данные XML из точки в точку, и это не удается, хорошо иметь возможность прочитать XML и выяснить, что пошло не так. Если XML сжат и передача не удалась, иногда невозможно распаковать его и проверить содержимое. Другими словами, сжатие XML сводит на нет его удобочитаемость.

    Я бы сказал, использовать XML (и / или JSON), потому что когда-нибудь вы или кто-то другой (с коротким характером и большой коллекцией оружия), возможно, придется искать ошибку в данных CSV.

    Так что да, я говорю о читабельности, не забудьте подумать о другом парне! Возможно, он думает о вас.

    XML предоставляет возможность пометить ваши данные метаданными (предоставленными именами тегов и именами атрибутов), а CSV - нет. Соедините это со способностью определять структурированные иерархии, и это облегчит понимание XML, когда предоставляется только данные, тогда как CSV потребуется сопроводительный инструмент или документ, чтобы описать, как интерпретируется каждое значение.

    Вы можете легко перемещаться по XML-данным, даже если у вас есть сложные данные.

    Проверьте эти ссылки:

    И еще раз для XML: X в XML означает E xtensible (я знаю, на самом деле это не мнемоника :-P). Это означает, что с помощью механизма пространства имен XML вы можете объединить любые два языка XML, которые вам нравятся, и объединить их в один и тот же документ. Учитывая, что существует только один CSV-язык (не считая множества стилей-разделителей), XML может справиться с довольно большой сложностью, и это модульно.

    Это, однако, является преимуществом CSV: если у вас действительно есть табличные данные, синтаксис XML чаще всего избыточен.

    Я также обнаружил, что некоторые генераторы / синтаксические анализаторы cvs испытывают большие трудности с общими текстовыми данными. Длинные текстовые строки с большим количеством возвратов каретки, запятых, цитат и т. Д., Просто усложняют жизнь, когда дело доходит до манипулирования cvs.

    SSMS любит обрезать CSV для удовольствия.

    Структурированная, удобочитаемая, удобная для редактирования, валидация, анализируемость, трансформируемость, типизация, пространства имен, мощные библиотеки, стоящие за ней, - все это среди многих причин.

    Прежде всего, хотя это стандарт.

    <Ол>
  • Существуют парсеры и эмиттеры для него на каждом языке и базе данных
  • Они занимаются кодированием для меня
  • Они занимаются побегом за мной
  • Это все, что важно для меня.

    Конечно, есть нестандартный способ экранирования в CSV (т. е. " способ, которым Excel делает это "), и это не совсем сложно написать самому, но для этого нужно немного время. И тогда вы должны безоговорочно договориться о кодировке символов вне группы. Но тогда, потому что это так просто, люди пытаются написать это сами и неизменно портят либо # 2, либо # 3.

    JSON также соответствует # 2 и # 3 и приближается к удовлетворению # 1. Это также возможно проще, по крайней мере для файлов без документов. Неудивительно, что я все больше и больше использую его как внутри, так и снаружи.

    И я также предпочитаю это, потому что это намного более читабельно.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top