# XStream, CSV Datei



## masul (1. Mai 2012)

Guten Abend allerseits!

Ich muss für mein Medieninformatik-Studium eine Aufgabe mit XStream lösen. 
Die Aufgabe lautet wie folgt: 
Schreiben Sie eine Methode, die eine Adressenliste aus einer CSV-Datei liest und dann mit Hilfe von XStream in eine XML-Datei schreibt.

Problem: Ich habe noch nie zuvor XStream verwendet, wir sollten es uns quasi im Selbststudium mit dem Two Minute Tutorial beibringen XStream - Two Minute Tutorial

Ich habe die Bibliothek schon in Eclipse eingebunden und versucht, die Aufgabe zu lösen. Leider ohne Erfolg. Ehrlich gesagt habe ich nicht genau verstanden, wie XStream funktioniert und vor allem, wo ich denn die erstellte XML Datei finde. 

Meine CSV Datei sieht so aus: 

10115,Berlin,Proskauerstrasse,4
10112,Bonn,Vogelstrasse,11
11212,Hamburg,Amselweg,23
91212,Hannover,Helmstedertstrasse,76
10345,Buckow,Eichenstrasse,16
18982,Beelitz,Mariaerstrasse,12
10115,Stuttgart,Ebertstrasse,33
10234,Rosenheim,Bundestagstrasse,50
13545,Wiesbaden,Ahornweg,101
13545,Mainz,Hauptstrasse,103

Ich habe in einer vorherigen Aufgabe schonmal aus der CSV Datei gelesen und alle Daten in ein Adressen-Array gepackt: 


```
public class Adressen {

        public static List<Adresse> createAdresslistFromCSV(Scanner in, char seperator) {
		File file = new File("testCSV.csv");
		Character sep = new Character(seperator);
		List<Adresse> adressen = new ArrayList<Adresse>();
		try {
			in = new Scanner(file);
		} catch (FileNotFoundException e) {
			System.out.println("Datei kann nicht gefunden werden !");
		}
		
		String strassenname = "";
		int hausnr = 0;
		int plz = 0;
		String ort = "";
	
		while(in.hasNext() ) {
			String line = in.nextLine();
			String[] readAdress = line.split(sep.toString());

			plz = Integer.parseInt(readAdress[0]);
			ort = (readAdress[1]);
			strassenname = readAdress[2];
			hausnr = Integer.parseInt(readAdress[3]);
			
			adressen.add(new Adresse(plz, ort, strassenname, hausnr));
		}
		System.out.println(adressen.toString());
		return adressen;	
	}
...
}
```

Außerdem gibt es die Klasse "Adresse":


```
public class Adresse {
	protected int plz;
	protected String ort;
	protected String strassenname;
	protected int hausnr;
	
	public Adresse(int plz, String ort, String strassenname, int hausnr){
		this.plz = plz;
		this.ort = ort;
		this.strassenname = strassenname;
		this.hausnr = hausnr;
	}
	
	public Adresse (Adresse adr){
		this(adr.plz, adr.ort, adr.strassenname, adr.hausnr);
	}
...
```


Und schließlich mein bescheidener Versuch, die Methode zu schreiben:


```
public static void CSVtoXML(String csvPath) {
			
	Scanner sc = new Scanner(csvPath);
	Adresse[] adresses = (Adresse[]) Adressen.createAdresslistFromCSV( sc, ',').toArray();
	String xml = null;

	for(Adresse a: adresses) {
		xs.alias("adresse", Adresse.class);
		xml = xs.toXML(a);	
		}	
	}
```

Ich hoffe, dass die Informationen ausreichen, um mein Problem nachvollziehen zu können


----------



## Marcinek (1. Mai 2012)

In der Variable xml steht die XML Struktur.

Kommt hier ein Fehler?


----------



## masul (1. Mai 2012)

Nein, es wird überhaupt kein Fehler angezeigt..


----------



## Marcinek (1. Mai 2012)

Ja dann ist es, wie ich gesagt habe.

Du musst den inhalt von xml in eine Datei schreiben.

Oder schaust dir mal die weiterführenden Tutorials an.:rtfm:


----------



## masul (1. Mai 2012)

Also dient XStream nur dazu, die XML-Struktur zu erstellen, aber nicht dazu, eine XML Datei zu erstellen! Oder?


----------



## Marcinek (1. Mai 2012)

Genau.

Es kann jedoch auch xml dateien erzeugen.


----------



## masul (1. Mai 2012)

Und wie? Das ist nämlich das, was ich nicht verstanden habe, ob ich selbst eine Datei anhand des Strings erzeugen soll oder ob die Datei automatisch erzeugt wird.


----------



## Marcinek (1. Mai 2012)

Write XML file (using XStream) to filesystem in Java - Stack Overflow


----------



## GUI-Programmer (1. Mai 2012)

Fast dasselbe habe ich vor ein paar Minuten gemacht: ArrayList speichern


----------



## masul (3. Mai 2012)

Vieeeeeelen Dank für eure Hilfe! Auch die Links waren sehr hilfreich!


----------

