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

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.

17 Ответы

0 голосов
от
Существует ли приложение или библиотека на языке Java, что позволит мне преобразовать файл данных
CSV
в
XML
файл? В
XML
теги будут представлены в первой строке, содержащей заголовки столбцов.
0 голосов
от
Может быть, это может помочь: JSefa Вы можете прочитать CSV-файл с помощью этого инструмента и сериализовать его в XML.
0 голосов
от
Как и другие выше, я не знаю, любой способ сделать это, но если вы готовы использовать очень простые внешние библиотеки, я бы предложил: OpenCsv для разбора CSV-файл (маленький, простой, надежный и легкий в использовании) Кинокомпании xStream для парсинга/сериализации XML (очень очень проста в использовании, и создание полностью человеческий читаемый XML) Используя тот же пример данных, как указано выше, код будет выглядеть так:
package fr.megiste.test;

import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;

import au.com.bytecode.opencsv.CSVReader;

import com.thoughtworks.xstream.XStream;

public class CsvToXml {     

    public static void main(String[] args) {

        String startFile = "./startData.csv";
        String outFile = "./outData.xml";

        try {
            CSVReader reader = new CSVReader(new FileReader(startFile));
            String[] line = null;

            String[] header = reader.readNext();

            List out = new ArrayList();

            while((line = reader.readNext())!=null){
                List
0 голосов
от
Я знаю, что вы просили для Java, но это, как мне кажется, задача хорошо подходит для скриптового языка. Вот краткий (очень простое) решение, написанных на Groovy. тест.КШМ
string,float1,float2,integer
hello world,1.0,3.3,4
goodbye world,1e9,

csvtoxml.груви

#!/usr/bin/env groovy

def csvdata = []
new File("test.csv").eachLine { line 

Пишет следующий XML-код в stdout:

0 голосов
от
Я с открытым исходным кодом основу для работы с CSV и текстовые файлы в целом. Может стоит смотреть: JFileHelpers. С этим набором инструментов вы можете написать код, используя фасоль, как:
@FixedLengthRecord()
public class Customer {
    @FieldFixedLength(4)
    public Integer custId;

    @FieldAlign(alignMode=AlignMode.Right)
    @FieldFixedLength(20)
    public String name;

    @FieldFixedLength(3)
    public Integer rating;

    @FieldTrim(trimMode=TrimMode.Right)
    @FieldFixedLength(10)
    @FieldConverter(converter = ConverterKind.Date, 
    format = "dd

а потом просто парсить текстовые файлы, используя:

FileHelperEngine
0 голосов
от
Это решение не нуждается в CSV или XML-библиотек и, я знаю, он не выполняет недопустимых символов и кодировка вопросов, но вы могли бы быть заинтересованы в нем, при условии, что ваш CSV-файл ввода не нарушает вышеупомянутых правил. Внимание: вы не должны использовать этот код, если вы не знаете, что вы делаете или не имеют возможность использовать дополнительные библиотеки (возможно, в некоторых бюрократических проектов)... использовать StringBuffer для пожилых сред... Так что здесь мы идем:
BufferedReader reader = new BufferedReader(new InputStreamReader(
        Csv2Xml.class.getResourceAsStream("test.csv")));
StringBuilder xml = new StringBuilder();
String lineBreak = System.getProperty("line.separator");
String line = null;
List
0 голосов
от
Большая разница заключается в том, что JSefa приносит в том, что он может сериализовать объекты Java в формате CSV/XML и т. д. файлов и может десериализовать обратно в Java-объекты. И это обусловлено аннотации, которая дает вам много контроль над выходом. JFileHelpers также выглядит интересно.
0 голосов
от
Я не понимаю, почему ты хочешь сделать это. Это звучит почти как культ карго программирования. Преобразование CSV-файла в XML не добавить любое значение. Ваша программа уже считывает CSV-файл, так спорим, что вам нужно в XML не работает. С другой стороны, для чтения CSV-файл, делать что-то со значениями, А затем сериализации в XML имеет смысл (ну, как бы через XML может иметь смысл... ;)) но вы бы, мол, уже есть средства сериализации в XML.
0 голосов
от
Вы можете сделать это очень легко с помощью Groovy, и код очень читабельный. В основном, текстовой переменной будет записано
contacts.xml
для каждой строки в
contactData.csv
, и массив полей содержит каждый столбец.
def file1 = new File('c:\\temp\\ContactData.csv')
def file2 = new File('c:\\temp\\contacts.xml')

def reader = new FileReader(file1)
def writer = new FileWriter(file2)

reader.transformLine(writer) { line
0 голосов
от
Вы могли бы использовать XSLT. Google его, и вы найдете несколько примеров, например CSV в XML Если вы использовать XSLT, то вы можете преобразовать XML в любом формате вы хотите.
...