# Welche Möglichkeiten MultiElement XML



## Weisswurst (2. Sep 2009)

Hi!

Ich möchte mal testweise für ein kleines Programm eine XML Datei zur Konfiguration verwenden.
Es geht dabei um ein Programm, dass verschiedene Dateien nach verschiedenen Begriffen durchforstet.

Die XML Datei stelle ich mir in etwa so vor:

```
<config>
	<datei>
		<pfad>/hakjhasdjk/jasj.jdf</pfad>
		<begriffe>begriff1,begriff2,begriff3</begriffe>
	</datei>
</config>
```

Es wird dann natürlich mehrere Dateien geben.

Ich stelle mir das in etwa so vor, dass ich im Programm dann eine Liste habe von Dateien, die in der XML Datei erwähnt sind. Entweder hab ich mir dann gleich datei objekte angelegt, wo dann auch die Suchbegriffe hinterlegt sind, oder ich würde eben die Liste durch gehen und dann, wenn's vom Programmaaluf her so weit ist, mittels z.B. XPath gezielt die Begriffe von der aktuellen Datei raussuchen.

Ist ein JavaSE Projekt. Ich hätte aber keine Skrupel da Libs aus EE ein zu bringen


----------



## newcron (3. Sep 2009)

Es kommt zunächst mal darauf an, wie groß diese Konfigurationsdateien werden. Werden sie riesig, solltest du mit SAX Parsen, in dem Fall würde ich dir allerdings zu einer nicht so tiefen Verschachtelung raten, und mit Attributen zu arbeiten. Das ist mit SAX einfacher: 

```
<config>
  <file path="pfad/file.txt" keywords="wort1;wort2;wort2" />
</config>
```
Das Problem hierbei ist allerdings, dass du die keywords in einem Attribut hast (das ist bei deiner XML-Datei auch der Fall), was kein guter Stil ist. 
Schöner wäre: 

```
<config>
	<file path="file.txt">
		<keyword word="wort1"/>
		<keyword word="wort2"/>
	</file>
</config>
```

da SAX-Parsen allerdings etwas umständlich sein kann (du musst einen XML-Eventhandler schreiben) wäre die Alternative eine Dom Bibliothek wie DOM4J zu verwenden. Mit der habe ich sehr gute Erfahrung gemacht. 

Zu deiner Vorgehensweise: 
Mach eine Model-Klasse, die eine Liste von Keywords und ein File-Objekt enthält, und instanziere für jedes datei/file-Element, dass du findest eines davon. Am Schluss hast du eine Liste mit mehreren von diesen Model-Objekten, die du nun in deiner anwendung abarbeiten kannst.


----------



## Weisswurst (8. Sep 2009)

Danke, werd mir mal DOM4J anschauen.


----------

