# XML/Textdateien "mitkompilieren" ?



## halunke33 (13. Mai 2010)

Hallo!

Ich habe ein Programm, welches XML-Dateien verarbeitet. Ein Teilschritt dabei ist, diese gegen ein XSD zu validieren. Bisher war es so, dass er User das XSD noch per FileChooser auswählen musste, ich würde die XSD aber gerne ins Programm integrieren. Da sich diese XSD wohl nicht mehr so schnell verändern wird, wäre es auch ok, diese mit in das Programm zu kompilieren statt in ein Verzeichnis zu legen. Dann hätte man auch nicht mehr das Problem, dass man erst die Existenz des Files prüfen müsste.
Die XSD direkt im Code als String festzulegen fällt allerdings raus.

Was würdet ihr vorschlagen? Man müsste natürlich aus dem Code heraus später irgendwie dran kommen.


----------



## Atze (13. Mai 2010)

wieso "mitkompilieren?"
verdrahte den pfad zur xsd doch einfach hart in den code, anstatt den pfad vom filechooser wählen zu lassen!


----------



## halunke33 (13. Mai 2010)

Eigentlich bin ich davon abgekommen wegen folgendem Thread:

http://www.java-forum.org/java-basics-anfaenger-themen/96366-zugriff-datei-eclipse-projekt.html

Ich konnte irgendwie auf Anhieb nicht herauslesen, ob es eine Lösung gibt die auch außerhalb Eclipse funktioniert UND gleichzeitig sauber ist.


----------



## Wildcard (13. Mai 2010)

Einfach mit ins jar packen und über den Classloader laden. Die Datei kommt automatisch ins Jar wenn sie in einem Source Folder oder Package liegt, wenn nicht muss sie händisch oder mit tools wie zB Ant verpackt werden.


----------



## halunke33 (13. Mai 2010)

Also dann erstelle ich in meinem Eclipseprojekt neben "src" noch einen "data" Folder, erkläre diesen per Kontextmenü als Sourcefolder, kopiere dorthinein eine validation.xsd und lade diese zur Laufzeit dann mit 

new File(getClass().getClassLoader().getResource("dateiname").toURI()); ?


----------



## Wildcard (13. Mai 2010)

Nein, nicht new File. Die File API ist für Dateien und in einem Archiv liegen keine Dateien.
Fast alle APIs können wahlweise mit InputStreams oder URLs arbeiten. getResource liefert dir eine URL, getResourceAsStream einen InputStream.


----------

