2010-12-05 6 views
1

Что происходит быстрее и лучше?Чтение XML и чтение CSV-файла java

Чтение XML с помощью DocumentBuilder или CSV с помощью FileReader/BufferReader в Java?

+5

Это очень широкий вопрос - ответ зависит от множества факторов, таких как размер документа и какая обработка, которую вы пытаетесь сделать. Можете ли вы дать более подробную информацию о том, какую проблему вы пытаетесь решить? – 2010-12-05 15:03:44

ответ

1

Я согласен с грубыми ошибками и даффимо. Я просто хотел добавить следующее.

Как уже было сказано, оба формата данных, поэтому подумайте о своих данных. Насколько велика и сложна ли она? Если он иерархичен, забудьте о CSV. Если он не очень большой, сделайте то же самое.

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

Если данные очень большие, и ваш парсер должен быть очень быстрым, проверьте JSON. Он должен быть быстрее XML, потому что он менее подробный.

1

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

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

1

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

RELATED_QUESTION:When and Why is XML preferable to CSV?

1

Чтение файла CSV с FileReader классом быстрее, так как читатель только читает файл и разбор значений является довольно простым шагом здесь.

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

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

1

Мне было интересно то же самое. Я просто сделал грубую проверку с помощью Excel для чтения и анализа простого файла с 8000 записей. Загрузка XML составляла ~ 8 секунд. Нагрузка CSV заняла менее 1 секунды.

Я считаю, что CSV - это абсолютно правильный выбор для простых табличных данных, и он переносится намного реже. XML является БОЛЬШИМ, для более сложных сценариев ...