Hallo miteinander, ich bin relativ neu hier und habe sozusagen eine Bitte. Meine Aufgabe ist zur Zeit ein Programm zu schreiben welches eine CSV datei einließt und diese zunächst in der Commandozeile von Netbeans(Programm) anzeigt. Ich habe bisher 3 Klassen
Eine zum eigentlichen einlesen der Datei, eine Zum konvertieren
(später) in ein XML format was zum Schluss ausgegeben werden soll.
Also hier die erste:
So die zweite sollte das umwandeln ( tut sie nicht, es kommt aber auch kein Error:
Und meine dritte Klasse sieht so aus(da wollte ich erstmal die Lines so anzeigen ohne Ordnung, Trennung der Zeichen ect. :
So und meine Main.java( ist leer, weiß nich genau wie ich die andern Klassn da einbinde?!?!):
So also hab soweit probiert eine CSV Datei einzulesen( Folgendes Format, und dies ist nur ein kleiner Ausschnitt):
Aber es geschieht nix. Ich weiß auch nich warum bei der LineByLine Klasse manche Wörter ( LineNumberInputStream fileStream = new LineNumberInputStream(f) Durchgestrichen werden also von Netbeans selber.
Könnte da mal jemand drüber schauen? Wäre super. Denn dies ist meine Praktikumsaufgaube und würde einen tollen Eindruck hinterlassen wenns klappt ^^ .
Danke schon mal.
Eine zum eigentlichen einlesen der Datei, eine Zum konvertieren
(später) in ein XML format was zum Schluss ausgegeben werden soll.
Also hier die erste:
Java:
package phonebook;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
public final class convert
{
static Document document;
String[] list;
String[] head;
public static void readfile(String string[])
{
convert demo = new convert("home/guest/desktop/test.xml");
demo.createXMLBasic();
demo.loadCSV("home/guest/Desktop/test.csv"); // Einzulesende Datei weöche umgewandelt wird/werden soll.
demo.speichern("home/guest/Desktop/test.xml"); // Wo soll die XML abgelegt werden?
}
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)
{
System.out.println("Fehler");
// pce.printStackTrace();
}
catch (Throwable t)
{
System.out.println("Fehler");
}
}
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)
{
System.out.println("Fehler beim Lesen der Zeile");
}
}
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)
{
System.out.println("Fehler beim Erzeugen des Dokumentes");
}
}
public void speichern(String string)
{
try
{
XMLOutputter outputter = new XMLOutputter();
outputter.output(document,new FileOutputStream(string));
}
catch (IOException e)
{
System.out.println("Fehler beim Ausgeben der XML-Datei");
}
}
}
So die zweite sollte das umwandeln ( tut sie nicht, es kommt aber auch kein Error:
Java:
import java.io.OutputStream;
import java.io.PrintWriter;
import org.w3c.dom.Document;
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;
}
}
}
Und meine dritte Klasse sieht so aus(da wollte ich erstmal die Lines so anzeigen ohne Ordnung, Trennung der Zeichen ect. :
Java:
import java.io.*;
public class LineByLine {
public static void main(java.lang.String[] args){
public static void main () throws IOException {
String fileName = "/home/guest/Desktop/test" ; //einzulesende Datei wird
FileInputStream f = new FileInputStream(fileName);
LineNumberInputStream fileStream = new LineNumberInputStream(f);
try{
int c;
System.out.print("Line 1;");
while((c=fileStream.read()) != -1)
System.out.print((char) c);
if (c=='\n') {
System.out.print("Line"+(fileStream.getLineNumber()+1)
+ ",");
}
} catch (IOException e) {
System.out.println("Fehler beim Ausgeben der Daten-Lines!");
}
}
}
So und meine Main.java( ist leer, weiß nich genau wie ich die andern Klassn da einbinde?!?!):
Java:
package phonebook;
public class Main {
public static void main(String[] args) {
}
}
So also hab soweit probiert eine CSV Datei einzulesen( Folgendes Format, und dies ist nur ein kleiner Ausschnitt):
Code:
[Datenberge entfernt]
Aber es geschieht nix. Ich weiß auch nich warum bei der LineByLine Klasse manche Wörter ( LineNumberInputStream fileStream = new LineNumberInputStream(f) Durchgestrichen werden also von Netbeans selber.
Könnte da mal jemand drüber schauen? Wäre super. Denn dies ist meine Praktikumsaufgaube und würde einen tollen Eindruck hinterlassen wenns klappt ^^ .
Danke schon mal.
Zuletzt bearbeitet von einem Moderator: