Wenn du eine Datei wie z.B. die musterdatei_041222.txt von www.gdv-online.de importieren willst, schau am besten das Main-Programm an. Dort wird eine beliebige Datei importiert (Option "-import"), als XML (Option "-xml") ausgegeben und anschliessend validiert (Option "-validate").
Und hier jetzt der Import:
Datenpaket datenpaket = new Datenpaket(); datenpaket.importFrom(url);
Neben dem Input über eine URL wird auch der Import einer Datein, von einem InputStream oder Reader unterstützt.
Wenn du wissen willst, wie du nach einem Import über die einzelnen Sätze interieren kannst, schau die ram besten die Datenpaket-Klasse n, wie die einzelnen Datensaetze in der export-Methode rausgeschrieben werden:
for (Iterator<Datensatz> iterator = datensaetze.iterator(); iterator.hasNext();) { Datensatz datensatz = iterator.next(); datensatz.export(writer); }
Über einen Satz oder Datensatz kommst du an die einen einzelnen Felder ran. Gib dazu den Namen des Feldes an (alternativ kannst du auch über seine Byte-Adresse innerhalb eines Records gehen):
Feld absenderFeld = vorsatz.getFeld(Bezeichner.of("Absender"));
Für die meisten Bezeichner existiert in Bezeichner eine Konstante, die dir dabei hilft, Schreibfehler zu vermeiden:
Feld absenderFeld = vorsatz.getFeld(Bezeichner.ABSENDER);
(siehe auch testSetAbsender()-Methode in VorsatzTest).
Seit 0.9.2 kannst du mehrere Datenpakete über einen InputStream oder Reader importieren:
List<Datenpaket> datenpakete = new ArrayList<Datenpaket>(); while (true) { Datenpaket paket = new Datenpaket(); try { paket.importFrom(inputStream); datenpakete.add(paket); } catch (EOFException ex) { log.info("EOF nach " + datenpakete.size() + " Datenpaketen erreicht."); break; } }
Soll nur ein einzelner Datensatz importiert werden, kann dies direkt ueber die Datensatz-Klasse erfolgen:
Datensatz satz100 = SatzRegistry.getInstance().getDatensatz(100); satz100.importFrom(file);
Dieses und weitere Beispiele befinden sich in ImportExport.