# Werte aus einer .yml Datei lesen



## Lukas97 (3. Okt 2012)

Hallo,

zu allererst, ich bin neu hier im Forum (habe 2 Stunden nach einen Java-Forum gesucht).
Ich bin nicht relativ neu, ich Programmiere zurzeit nur mit GUIs.
Zurzeit Arbeite ich an einem kleinen Programm, welches Chancen etc für "World of Tanks" ausrechnet, also 1 vs 1 sozusagen. Dazu muss ich alle Werte der ca. 120 Panzer haben, und wieder ändern können, wenn ein Update erscheint. Diese Werte wären:
-Schaden
-Durchschlagskraft
-Panzerung
-Schüsse/Minute (Das muss float sein, weil manche (siehe IS3, 3,5 - 4,5x in der Minute schießt)

Ich habe mir schon irgendwie sowas ausgedacht wie:

```
public getDamage(){
   return Tanks.yml.IS3.Schaden;
}
```
Wie stelle ich des nun an? Das Programm soll später eine .jar werden.
Danke für jede Hilfe.


----------



## ARadauer (3. Okt 2012)

Kommt drauf an was in der yml drinnen steht. Ist das ein klartext format? Kannst du das mit notepad öffnen?

Dann Datenstruktur Modellieren, Datei einlesen, Strutkur befüllen, Verwenden...


----------



## Lukas97 (3. Okt 2012)

Eventuell so:

//SchwerePanzer
IS3:   Schaden[390}
         Durchschlagskraft[225]
         ...

Würde das so funktionieren?


----------



## Marcinek (3. Okt 2012)

Jo. Das könnte man parsen.

Hast du schon die Werte eingelesen? Oder fragst du, wie man aus einer Datei lesen kann?


----------



## Lukas97 (4. Okt 2012)

Ich frage, wie das Komplett geht, also Einlesen und einer Variablen zugeordnet wird.


----------



## Marcinek (4. Okt 2012)

java aus datei lesen - Google Search


----------



## troll (4. Okt 2012)

YAML ist eine mischung aus Properties und XML (wobei der XML-teil hier wohl nur die mögliche baumstruktur wäre) ...
ergo muss man das ganze auch so parsen ...
einzelne sub-bäume werden durch einrückung mit label definiert ...

um das ganze also sinnvoll zu parsen müsste man erstmal das file komplett einlesen (hier dürfte es mit BufferedReader.readLine() getan sein) und dann im nachhinein die erhaltene ArrayList weiter untersuchen ...
dazu würde ich erstmal in jeder zeile gucken : name:wert-paar oder block-label ...
wenn name:wert-paar erstmal ignorieren ....
wenn block-label weiter bis zum ende des blocks arbeiten ... wie weit man hier mit whitespaces und regex liegt am source-file und ob dieses dem YAML-standard entspricht
wenn man dann den block in einer sub-liste hat mit dieser von vorne beginnen .. so lange bis man den "tiefsten punkt" gefunden hat ...

so zerlegt man schritt für schritt das file in einzelen sub-listen die dann am ende nur noch name:wert-paare enthalten ..
das ganze kann man dann in einer Map oder einem Set sinnvoll und strukturiert wieder zusammen stecken ...


wenn mans selbst basteln will für einen anfänger vielleicht etwas schwierig wenn man nicht mal weis wie man generell daten einliest ... aber es gibt ja für viele sprachen bereits fertige parser ..


btw : ich hab jetzt mal einiges der YAML-spec weggelassen wie listen und datentypen ... denn ich glaube das würde jetzt etwas zu weit führen ...


----------



## Tomate_Salat (4. Okt 2012)

Man könnte auch mal Google bemühen. Oder noch einfacher: die yaml-Homepage besuchen:
The Official YAML Web Site
da findest du einige java-libs mit denen du yaml-dateien verwenden kannst.


----------



## kama (4. Okt 2012)

Hi,

zu yaml fällt mir folgendes ein:

snakeyaml - YAML parser and emitter for Java - Google Project Hosting

Gruß
Karl-Heinz Marbaise


----------



## oldshoe (17. Okt 2012)

Achtung keine Tabs in der yml Datei verwenden. Dabei gibt's Probleme beim Parsen.


----------

