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

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

20 ответов


некоторые преимущества:

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

чтобы назвать несколько из моей головы.


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


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

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

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

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

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


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

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


вы можете иметь гораздо более сложную иерархию и т. д. и структуры с XML-и CSV-файл. Он предлагает гораздо больше гибкости.


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


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

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


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

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

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

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

  1. он использует текст, чтобы указать свою собственную кодировку текста (курица и яйцо?)
  2. ни один из наиболее распространенных языков схемы для XML не работает особенно хорошо.
  3. древний и банальный способ создания языков разметки с помощью <tags> не особенно полезно в качестве стандарта.
  4. XML пытается ретроактивно shoehorn более мощные языки наценки, такие как SGML на основе, сами по себе, создавая беспорядок несовместимого наследия.
  5. по-прежнему остается определить, могут ли текстовые escape-последовательности XML работать для чего-либо, кроме самых простых случаев (т. е. дружественные данные).

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


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


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


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

XML является стандартным и не будет поражен различными OS'е версии CSV


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


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

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


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


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

проверьте следующие ссылки:


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

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

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

SSMS любит усекать csv для удовольствия.


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

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


  1. существуют Парсеры и эмиттеры для него на каждом языке и в каждой базе данных
  2. они занимаются кодированием для меня
  3. они имеют дело с побегом для меня

это все, что имеет значение для меня.

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

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


и я также предпочитаю его, потому что он гораздо более читаемый.