Member 13907748 Ответов: 0

Чтение из CSV-файла и разделение XML-файла на несколько XML-файлов с помощью java


У меня есть некоторые данные, которые я получаю из файла excel (CSV). Для каждой строки в файле excel я хочу создать другой xml-файл.

Функция, которую я написал, принимает в строку заголовков список массивов из CSV-файла и имя файла. Я думаю, что в моем цикле for, который проходит через строки из CSV. Мне нужно создать оператор, который может создавать несколько xml-файлов, а затем мне нужно изменить эту цепочку в моем основном методе. Мне нужно некоторое руководство о том, как создать это заявление

Мой основной способ и способ wrtietoXml наклеиваются ниже, пожалуйста, предложить некоторые рекомендации


public class CsvToXml {

    
	
	
	
    public static void main (String Args[]){
    	
        //This is hard coded, in a future version I would consider stripping this from a command-line arg.
        BufferedReader bufferedCsvFile = HelperMethods.getCsvFileBuffer("/Users/edgarjohnson/eclipse-workspace/CsvToXml/in.csv");
        
        
        ArrayList<String> csvFileStrings = new ArrayList<String>();
        HelperMethods.readCsvToStrings(csvFileStrings, bufferedCsvFile);
        
        
        String[] columnHeaders = HelperMethods.setHeaders(csvFileStrings);
        csvFileStrings.remove(0); // Remove headers from the csvStrings Arraylist
        HelperMethods.writeXmlFile(columnHeaders, csvFileStrings, "xmlOutput.xml");
    }
}




public static void writeXmlFile(String[] headers, ArrayList <String> stringsFromCsv, String fileName){
       try {
           BufferedWriter buffWrite = new BufferedWriter(new FileWriter(fileName));
           buffWrite.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
           buffWrite.write("<patient>\r\n");

           //String array that is the same size is that of the string from csv from line 66-69

           //For each string in the csv file

           for(String s:stringsFromCsv){

               buffWrite.write("\t<person>\r\n");

               //Split the line into an array of strings
               String fields[] = s.split(",");

               //For each item in that array of strings
               for(int i=0; i<fields.length; i++){
                   //Define a String and keep on adding to that string using field element array, String should be outside for loopLol

                   //Write the corresponding header to the file, as well as the value from the array 'fields'
                   buffWrite.write("\t\t<" + headers[i] +">"+ fields[i] + "</" + headers[i] +">\n");
               }
               buffWrite.write("\t</person>\n");
           }
           buffWrite.write("</people>");
           buffWrite.close();
       }

       catch (IOException ioe){ System.err.println("Error while writing to xml file in writeXmlFile: "); ioe.printStackTrace();
       }



   }


Что я уже пробовал:

Я попытался создать список массивов и сохранить xml-теги в массиве. Затем выполняется итерация по массиву и на основе имен тегов разделяется на несколько файлов. Но я не знаю, как бы я разделил код на несколько файлов.

0 Ответов