*.csv Datein in XML konvertieren

Wenn ich die xml datei aufmache zeigt der browser folgendes.

XML-Verarbeitungsfehler: Kein Element gefunden
Adresse: file:///C:/temp/serpil.xml
Zeile Nr. 1, Spalte 1:
^
 
Schau dir die Datei mal in einem Editor an. Schau mal ob da alles drin steht. Der IExplorer zeigt die nicht an, weil in der datei ein Fehler ist.
 
Poste mal bitte noch einmal die Klasse und wenn es möglich ist hänge mal bitte die cvs-datei mit an. danke.
 
Code:
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class convert
{
  static Document document;
  String[] list;
  String[] head;
  
  public static void main(String string[]) 
  {

    convert demo = new convert("C:/temp/serpil.xml");
    
    demo.createXMLBasic();
    demo.loadCSV("C:/temp/serpil.csv");
    demo.speichern("C:/temp/serpil.xml");
  }

  public convert(String string) 
  {
    newXMLFile(string);
  }

  public void newXMLFile(String string)
  { 
    try 
    {
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();
      document = builder.newDocument();
    } 
    catch (ParserConfigurationException pce) 
    {
      pce.printStackTrace();
    } 
    catch (Throwable t) 
    {
      t.printStackTrace();
    }
  }

  public void createXMLBasic() 
  {
    Element root = document.createElement("Person");
    document.appendChild(root);
  }

  public void loadCSV(String string) 
  {
    // Methode zum Laden von CSV
    
    String Zeile = "";
    try 
    {
      FileReader Eingabestrom = new FileReader(string);
      BufferedReader input = new BufferedReader(Eingabestrom);

      if((Zeile = input.readLine()) != null){
        head = Zeile.split(";");
        while ((Zeile = input.readLine()) != null) 
        {
          list = Zeile.split(";");      
          addData(list);
        }  
      }
      while (Zeile != null);
      input.close();
    }
    catch (IOException e) 
    {
      e.printStackTrace();
    }
  }

  
  public void addData(String[] data) 
  {
    Element root = document.getDocumentElement();

    try 
    { 
      for(int i =0; i<head.length ;i++)
      {       
        Element element = document.createElement(head[i]);
        root.appendChild(element);
        element.appendChild(document.createTextNode(data[i]));
      }
               
      
    } 
    catch (DOMException ex) 
    {
      ex.printStackTrace();
    }
  }
  
  public void speichern(String string) 
  {
    try 
    {
      XMLOutputter outputter = new XMLOutputter();
      
      outputter.output(document,new FileOutputStream(string));
    } 
    catch (IOException e) 
    {
      e.printStackTrace();
    }
  }

ich kann leider die .csv datei nicht mit anhängen. Der lädt das nicht hoch.

Vorname;Name;Geb.Datum;Ort
Muster;Mustermann;28.03.2007;Ismaning
 
Also ich hab genau die gleichen Klassen und die gleiche cvs-Datei und bei mir funktioniert es. Bin jetzt aber leider nicht an meinem Rechner. Wenn ich wieder dran bin, schreib ich dir mal eine Beispiel-Klasse.

MFG
zEriX
 
Hatte jetzt am Wochenende auch keine zeit zum reinschauen.
Werde mich aber heute damit beschäftigen und hoffe das ich Erfolg habe.
Vielen Danke für deine Bemühungen

Gruß
 
Also ich weiss echt nicht woran es liegt.
Wenn ich es als test in der console ausgebe, gibt er es mir aus.
 
Hallo,
mit diesen Klassen funktioniert es.

Code:
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class convert
{
  static Document document;
  String[] list;
  String[] head;
  
  public static void main(String string[]) 
  {

    convert demo = new convert("C:/temp/test.xml");
    
    demo.createXMLBasic();
    demo.loadCSV("d:/test.csv");
    demo.speichern("d:/test.xml");
  }

  public convert(String string) 
  {
    newXMLFile(string);
  }

  public void newXMLFile(String string)
  { 
    try 
    {
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();
      document = builder.newDocument();
    } 
    catch (ParserConfigurationException pce) 
    {
      pce.printStackTrace();
    } 
    catch (Throwable t) 
    {
      t.printStackTrace();
    }
  }

  public void createXMLBasic() 
  {
    Element root = document.createElement("Person");
    document.appendChild(root);
  }

  public void loadCSV(String string) 
  {
    // Methode zum Laden von CSV
    
    String zeile = "";
    try 
    {
      FileReader Eingabestrom = new FileReader(string);
      BufferedReader input = new BufferedReader(Eingabestrom);

      if((zeile = input.readLine()) != null){
        head = zeile.split(";");
        while ((zeile = input.readLine()) != null) 
        {
          
          
          list = makeArrayForXML(zeile);      
          addData(list);
        }  
      }
      
      input.close();
    }
    catch (IOException e) 
    {
      e.printStackTrace();
    }
  }

  
  public void addData(String[] data) 
  {
    Element root = document.getDocumentElement();

    try 
    { 
      for(int i =0; i<head.length ;i++)
      {       
        Element element = document.createElement(head[i]);
        root.appendChild(element);
        if(!data[i].equals("nullString"))
          element.appendChild(document.createTextNode(data[i]));
      }
               
      
    } 
    catch (DOMException ex) 
    {
      ex.printStackTrace();
    }
  }
  
  
  private String[] makeArrayForXML (String zeile){
    if(zeile.startsWith(";")){
      zeile = ";"+zeile;
    }
    for(int i = 0; i < 2; i++){
      zeile = zeile.replaceAll(";;", ";nullString;");
    }
    return zeile.split(";");
  }
  
  public void speichern(String string) 
  {
    try 
    {
      XMLOutputter outputter = new XMLOutputter();
      
      outputter.output(document,new FileOutputStream(string));
    } 
    catch (IOException e) 
    {
      e.printStackTrace();
    }
  }
}

Code:
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;



/**
 * 
 */
public class XMLOutputter
{

  public void output(Document document, OutputStream out ){
    PrintWriter writer = new PrintWriter(out);
    travers(document,writer);
    writer.close();
  }
  
  private void travers(Node node, PrintWriter out){
    switch(node.getNodeType()){
      case Document.DOCUMENT_NODE:
        NodeList list=node.getChildNodes();
        out.println("<?xml version='1.0' encoding='iso-8859-1' ?>");
        for(int i=0; i< list.getLength();i++){
          travers(list.item(i), out);
        }
        break;
      case Document.ELEMENT_NODE: 
        list=node.getChildNodes();
        out.println("<"+node.getNodeName()+">");
        for(int i=0; i< list.getLength();i++){
          travers(list.item(i), out);
        }
        out.println("</"+node.getNodeName()+">");
        break;
      case Document.TEXT_NODE:
        out.println(node.getNodeValue());
        break;
    }
  }
  
  
}



MFG
zerix
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück