Есть ли на Java существующее приложение или библиотека, которые позволят мне преобразовать CSV
файл данных в XML
файл?
Эти XML
метки будут предоставлены через , возможно , первую строку , содержащую заголовки столбцов.
java
xml
csv
data-conversion
А Салим
источник
источник
Ответы:
Возможно, это может помочь: JSefa
Вы можете прочитать CSV-файл с помощью этого инструмента и преобразовать его в XML.
источник
Как и другие вышеупомянутые, я не знаю одношагового способа сделать это, но если вы готовы использовать очень простые внешние библиотеки, я бы предложил:
OpenCsv для разбора CSV (маленький, простой, надежный и простой в использовании)
Xstream для синтаксического анализа / сериализации XML (очень прост в использовании и создает полностью читаемый человеком XML)
Используя те же образцы данных, что и выше, код будет выглядеть так:
Получение следующего результата: (Xstream позволяет очень точно настроить результат ...)
источник
Я знаю, что вы просили Java, но мне кажется, что это задача, хорошо подходящая для языка сценариев. Вот быстрое (очень простое) решение, написанное на Groovy.
test.csv
csvtoxml.groovy
Записывает следующий XML-код в стандартный вывод:
Однако код выполняет очень простой синтаксический анализ (без учета кавычек или экранированных запятых) и не учитывает возможные отсутствующие данные.
источник
У меня есть платформа с открытым исходным кодом для работы с CSV и плоскими файлами в целом. Может стоит посмотреть: JFileHelpers .
С помощью этого набора инструментов вы можете писать код с использованием bean-компонентов, например:
а затем просто проанализируйте свои текстовые файлы, используя:
И у вас будет коллекция проанализированных объектов.
Надеюсь, это поможет!
источник
Это решение не требует каких-либо библиотек CSV или XML, и, я знаю, оно не обрабатывает какие-либо недопустимые символы и проблемы с кодировкой, но оно может вас заинтересовать, при условии, что ваш ввод CSV не нарушает вышеупомянутые правила.
Внимание: вам не следует использовать этот код, если вы не знаете, что делаете, или если у вас нет возможности использовать дополнительную библиотеку (возможно в некоторых бюрократических проектах) ... Используйте StringBuffer для более старых сред выполнения ...
Итак, начнем:
Входной test.csv (украденный из другого ответа на этой странице):
Полученный результат:
источник
Большое различие заключается в том, что JSefa предоставляет возможность сериализовать ваши java-объекты в файлы CSV / XML / etc и может десериализовать их обратно в java-объекты. И это связано с аннотациями, которые дают вам полный контроль над выводом.
JFileHelpers тоже выглядит интересно.
источник
Я не понимаю, зачем вам это нужно. Это звучит почти как кодирование культа карго.
Преобразование файла CSV в XML не добавляет никакой ценности. Ваша программа уже читает CSV-файл, поэтому аргументы в пользу того, что вам нужен XML, не работают.
С другой стороны, чтение файла CSV, делать что - то со значениями, а затем сериализации XML имеет смысл (ну, так же , как с помощью XML может иметь смысл ...;)) , но вы , мол , уже есть средства сериализация в XML.
источник
Вы можете сделать это исключительно легко с помощью Groovy, а код легко читается.
Обычно текстовая переменная записывается
contacts.xml
для каждой строки вcontactData.csv
, а массив полей содержит каждый столбец.источник
Вы можете использовать XSLT . Погуглите, и вы найдете несколько примеров, например, CSV в XML. Если вы используете XSLT, вы можете преобразовать XML в любой формат, который вам нужен.
источник
Также существует хорошая библиотека ServingXML от Дэниела Паркера, которая способна преобразовывать практически любой простой текстовый формат в XML и обратно.
Пример для вашего случая можно найти здесь : он использует заголовок поля в файле CSV в качестве имени элемента XML.
источник
Я не знаю ничего, что могло бы сделать это без того, чтобы вы хотя бы написали немного кода ... Вам понадобятся 2 отдельные библиотеки:
Я бы порекомендовал парсер CSV (если вы не хотите немного повеселиться, чтобы написать свой собственный парсер CSV) - это OpenCSV (проект SourceForge для анализа данных CSV).
Платформа XML-сериализации должна быть чем-то, что может масштабироваться в случае, если вы хотите преобразовать большой (или огромный) CSV-файл в XML: Я рекомендую Sun Java Streaming XML Parser Framework (см. Здесь ), которая позволяет выполнять анализ методом извлечения и сериализацию.
источник
Насколько я знаю, готовой библиотеки для этого не существует, но для создания инструмента, способного переводить из CSV в XML, вам потребуется всего лишь написать сырой анализатор CSV и подключить JDOM (или вашу XML-библиотеку Java из выбор) с некоторым кодом клея.
источник
Семейство процессоров Jackson имеет серверные части для нескольких форматов данных, а не только для JSON. Сюда входят серверные части как XML ( https://github.com/FasterXML/jackson-dataformat-xml ), так и CSV ( https://github.com/FasterXML/jackson-dataformat-csv/ ).
Преобразование будет основываться на чтении ввода с помощью серверной части CSV, записи с использованием базы данных XML. Это проще всего сделать, если у вас есть (или вы можете определить) POJO для построчных записей (CSV). Это не строгое требование, так как контент из CSV также может считываться «нетипизированным» (последовательность
String
массивов), но требует немного больше работы над выводом XML.Для стороны XML вам потребуется корневой объект оболочки, содержащий массив или
List
объекты для сериализации.источник
У меня была та же проблема, и мне требовалось приложение для преобразования файла CSV в файл XML для одного из моих проектов, но я не нашел в сети ничего бесплатного и достаточно хорошего, поэтому я написал свое собственное приложение Java Swing CSVtoXML.
Он доступен на моем сайте ЗДЕСЬ . Надеюсь, это поможет вам.
Если нет, вы можете легко написать свой собственный код, как это сделал я; Исходный код находится внутри файла jar, поэтому измените его по своему усмотрению, если он не соответствует вашим требованиям.
источник
Для части CSV вы можете использовать мою небольшую библиотеку с открытым исходным кодом
источник
Это может быть слишком простым или ограниченным решением, но не могли бы вы сделать для
String.split()
каждой строки файла, запомнив массив результатов первой строки для генерации XML, и просто выплюнуть данные массива каждой строки с правильным XML элементы, заполняющие каждую итерацию цикла?источник