# XML-Konfigurationsdatei (XML-Binder)



## Matzehonk (13. Juli 2009)

Hallo zusammen,

ich muss vorweg sagen, dass ich ein totaler Java-Neuling bin.
Ich habe ein Tool gebastelt, dass Datenbanken ausliest, sie in CVS Dateien schreibt und dann auf einen SFTP Server uploaded.

Nun bin ich dabei eine XML-Konfigurationsdatei mit einzubauen, aber das funktioniert noch nicht so, wie es soll.
XML Dateien parsen/auslesen und ausgeben lassen, bekomme ich ohne Probleme hin, aber sie an ein Objekt im Java binden klappt noch nicht.
Ich habe mich schon ein bisschen kundig gemacht in Sachen XML-Binder und co, aber habe es noch nicht hinbekommen.

In meiner XML Datei sollen Daten wie "Hostname", "Passwort", "Tabelle" usw. eingetragen werden können. Je nach Eingabe soll dann mein JavaTool den entsprechenden Server oder die betreffenden Datenbank ansteuern.


Gruß und schonmal Danke,
Matze

PS: Wie genau meine XML Datei dann aussehen muss, weiß ich auch noch nicht ganz, kenne nur die Grundzüge des Aufbaus einer XML Datei.


----------



## takidoso (13. Juli 2009)

Hi Matzehonk,
Wie Deine XML-Datei dann prinzipiell aussieht sollte man eigentlich aus den Attributen, die Du Deinem Programm mitgeben willst ersehen.
Frage: willst Du eigentlich auch die Tabellen und CVS-Struktur mitliefern?
Wenn dem so ist sind, neben den Verbindungsinformationen zur DB vermutlich auch noch folgende Daten relevant

- Tabellen oder View-Name
   - Feldname    FeldA
   - Feldname    FeldB
 ...

CSV-Separator              
CSV-Ausgangsdateiname 

die letzten zwei Informationen sollten vielleicht  auch per Aufrufargumente  überschreibbar sein

An Deiner Stelle würde ich vielleicht nicht mit zu vielen verschiedenen Technologien auf einmal loslegen. Versuch es doch einfach mit einem Sax-Parser und befülle Dein eigenes Konfigurations-Objekt.

BTW: muss es denn unbedingt XML sein? YAML halte ich für einfacher und auch im Allgemeinen für lesefreundlicher  ;-)


----------



## Matzehonk (13. Juli 2009)

Nein, ich will lediglich die Serverdaten und Datenquellen aus der XML auslesen lassen.


----------



## takidoso (14. Juli 2009)

Also Serverdaten, damit meinst Du vermutlich die Adresse des Servers.
mit DatenQuelle, vermutlich das Schema und vielleicht auch noch User und Passwort.
Bastele Dir doch dann einfach eine XML mit den paar Daten, was hält Dich auf?
Ich selbst hätte eigentlich angenommen, dass man die Tabelle und die benötigten Felder eigetnlich auch variabel (parametriesierbar) halten sollte, ansonsten würde das ganze nicht die Möglichkeiten bieten, die man haben könnte und an der Stelle vielleicht auch erwartet.
Auslesen würde ich das vermutlich entweder mit SAX oder mit DOM, natürlich könnte man auch JAXB verwenden um an einem kleinen Beispiel mal mit solcher Technologie umzugehen. STAX wäre auch noch möglich aber vielleicht auch nur als Lehrbeispiel.

Ich selbst wäre jedoch eher faul und würde für die paar Daten die guten alten Java-Properties bemühen


----------



## Matzehonk (22. Juli 2009)

Hallo zusammen, ich wollte nochmal schnell posten, wie ich es gemacht habe....


```
import java.util.Properties;
```


```
Properties config = new Properties();
    try {
    	config.loadFromXML(new FileInputStream(".\\config.xml"));
    } catch (FileNotFoundException e) {
    	Log.write("Configurationfile not found!");
    } catch (IOException e) {
    	Log.write(e);
    }
    final String sftpHostname = config.getProperty("sftpHostname");
    final String sftpUsername = config.getProperty("sftpUsername");
    final String sftpPassword = config.getProperty("sftpPassword");
    final String sqlServer = config.getProperty("sqlServer");
    final String sqlDatabase = config.getProperty("sqlDatabase");
    final String sqlUsername = config.getProperty("sqlUsername");
    final String sqlPassword = config.getProperty("sqlPassword");
    final String sqlSELECT = config.getProperty("sqlSELECT");
    final String uncServer = config.getProperty("uncServer");
```

Damit habe ich die Werte aus der XML an die Variablen gebunden!

Gruß Matze


----------



## Anime-Otaku (22. Juli 2009)

Ein kleiner Einwurf.
In Java werden Konfigurationen oftmals in sog. properties Dateien abgelegt. Eine Art Key Value Liste.
Die folgenden Aufbau haben:


```
#SQL Server Connection
server.host=127.0.0.1
server.port=80

xyz.123=blub
```

Zum  auslesen gibt es die Properties Klasse. Das ist die gleiche die Matzehonk benutzt hat. Aber eine Darstellung in XML für Properties ist eher unüblich.


----------

