# Datei-Typ-Design



## michi2 (6. Sep 2006)

Hallo,
Ich schreibe ein Programm, das Verb-Formen ausfrägt, und will jetzt einen Datei-Typ dafür "konstruieren".
Ich will ihn natürlich natürlich möglichst flezibel definieren, damit er in zukunft ab- und auf-werts kompatibel ist.
Die Frage ist wieviel Information ich in der Datei speichern soll, und welche nur in der Beschreibung der verwendeten Sprache.

Ich hätte mal so angefangen:

```
Dies ist eine Datei die Verbformen enthält.
#<Komentar>
[LANGUAGENAME]
<Name_der_Sprache>
[GERMANNAME]
<Deutsch_Überstetzung>
[FORMS]
[Form NUM=<nummer_der_Zeit>; TYPE=Text;]
<Form1>
<Form2>
<Form3>
<...>
[/FORM]
[Form NUM=<nummer_der_Zeit>; TYPE=Text;]
<Form1>
<...>
[/FORM]
[Form NUM=<nummer_der_Zeit>; TYPE=PRE_DEF_Radio;]
<richtige_Nummer>
[/FORM]
[Form NUM=<nummer_der_Zeit>; TYPE=PRE_DEF_Check;]
<richtige_Nummer>
[/FORM]
[Form NUM=<nummer_der_Zeit>; TYPE=Radio; RIGHT_NUMBER=<richtige_Nummer>;]
<Form1>
<Form2>
[/FORM]
[Form NUM=<nummer_der_Zeit>; TYPE=Check; RIGHT_NUMBER=<richtige_Nummer>;]
<Form1>
<Form2>
[/FORM]
[/FORMS]
```

Die in <> stehenden Werte sind die Zu erstezenden Werte.
In [FORMS] sind die Verbformen gelistet, mitt [FORM] wird jeweils eine Zeit (oder eine Verb-Form-Gruppe, oder so) deffiniert, ihr wird mit NUM ein Integer-Wert zugeortnet, jeder Wert ist mit einer Zeit verbunden (festgelegt durch die Def. der Sprache). Mit TYPE wird jedem [FORM] ein Typ zugewiesen, "Text" steht für gweöhnliche Formen die gefragt werden. Kennt das Programm einen Type-Wert nicht, so giegt es eine Meldung,und ignoriert diesen [Form]-Block, wodurch ih in neuen Programm-Versionen Features hinzufügen kann, ohne das das ältere Versione stört.
Die Namen der Zeiten, der Form-Angaben (für deutsch z.B. ich, du , er, wir...) sowie die Texte des "PRE_DEF_Radio"-Typs sind in der Deffinition der Sprache festgelegt.
Die erste Zeile dient zur Überprüfung ob dies ein Datei dieses Typs ist, der Komentar für Mata-Infos (Für FBI, BND und CIA ) und anderes

Was haltet ihr dafon, was sollte ich verbessern?

Vielen Dank fürs lesen und noch mehr fürs Antworten,
Michi


----------



## Wildcard (6. Sep 2006)

Ich halte XML für die bessere Alternative


----------



## michi2 (6. Sep 2006)

Wildcard hat gesagt.:
			
		

> Ich halte XML für die bessere Alternative


Ist aber deutlich Aufwendiger, und ich sehe keine Vorteile (vorallem da es inx mit dem web zu tun hat)


----------



## Wildcard (6. Sep 2006)

Eben nicht. Das macht es einfacher weil du keinen eigenen Parser brauchst, und du hast es viel leichter später neue Felder einzufügen.


> (vorallem da es inx mit dem web zu tun hat)


Mit dem 'web' hat XML grundsätzlich mal gar nichts zu tun :wink:


----------



## michi2 (6. Sep 2006)

Wiso brauch ich bei ML keine Parser? Den mus ich doch trotzdem selbst schreiben!
Ich hab nicht viel Ahnung von XML (von SVG abgesehen), aber mir scheint die realisierung mit XML eher schwerer zu sein!
So gilt inerhalb eines [Form]-Elements einfach: neue-Zeile: neue Form
Mit XML geht deas so nicht, oder irre ich mich?


----------



## byte (6. Sep 2006)

> Wiso brauch ich bei ML keine Parser? Den mus ich doch trotzdem selbst schreiben!



Nein, eben nicht. Es gibt doch schon zahlreiche Parser, z.b. www.jdom.org ,  das ist recht einsteigerfreundlich.


----------



## Wildcard (6. Sep 2006)

Sowohl das einlesen als auch das speichern von Java-Objekten in XML geht mittlerweile fast genauso einfach wie Serialisierung, also nahezu ohne eigenes zutun.
XML ist eigentlich immer einfacher und wartbarer als sich selbst mal eben ein Dateiformat zu basteln.
Es lohnt sich auch mal einen Blick in JAXB  zu riskieren


----------



## michi2 (6. Sep 2006)

Hat jemand gute (deutsche) Tuts zu JAXB? Hab keine guten gefunden.
Ich verstehe jedoch immer noch nicht welche Vorteile XML hat, kann mir das jemand genauer erklären?

Zu jdom hab ich ein gutes Tut gefunden, aber das mus ich dan in das Jar einpacken, oder? (Würde lieber was Java-internes haben)


----------



## byte (7. Sep 2006)

JAXB ist genial, wenn man Java Code mit XML-Schema Typen binden will. In Deinem Fall würde ich Dir aber ohne XML Kenntnisse erstmal davon abraten. Wenn Du keine externen Jars verwenden willst, dann beschäftige Dich mal mit JAXP.


----------



## michi2 (7. Sep 2006)

Ich hab mir das mal angesehen, aber das ist doch *viel* komplizierter als mein eigenes Format, und bringt keien Forteil!
Ich seh irgentwie nicht ein warum ich mir nen haufen extra Arbeit antun soll wenns auch einfacher geht, nur damit ich einen "Standart" erfülle.
Kann mir irgentjemand erklären was XML für einen Vorteil hat? Und was der unterschied zwischen DOM und SAX ist?


----------



## Wildcard (7. Sep 2006)

Nur weil du dich damit nicht auskennst heißt das noch lange nicht das es wirklich mehr arbeit ist.
Was denkst du denn warum XML überall eingesetzt wird? Weil es so kompliziert ist?  :roll: 
XML ist speziell dafür gemacht worden das es einfach für den Computer zu verstehen ist, und trotzdem noch für Menschen lesbar.


> Und was der unterschied zwischen DOM und SAX ist?


SAX ist ein schneller, ereignisgesteuerter und resourcenschonender Parser, während DOM ein komplettes Dokumentenmodell in den Speicher lädt.
DOM ist wesentlich einfacher zu bedienen als SAX.


----------

