Text-Datei parsen

mccae

Senfdazugeber
Huhu,

Ich habe eine Textdatei zeilenweise ausgelesen die wie folgt aufgebaut ist.

Leerzeichen habe ich durch einen Punkt ersetzt:

Code:
node0
.subnode0

..Shader: EnvStatMesh.fx
..Technique: Base
..Type: 2
...Texture: objects/StaticObjects/reflecting/mirror/textures/mirror_esm.dds
...Texture: Common\Textures\SpecularLUT_pow36.dds

.subnode1
..Shader: StaticMesh.fx
..Technique: BaseDetailNDetail
..Type: 2
...Texture: objects/StaticObjects/reflecting/mirror/textures/mirrorframe_c.dds
...Texture: objects/StaticObjects/reflecting/mirror/textures/mirrorframe_de.dds
...Texture: objects/StaticObjects/reflecting/mirror/textures/mirrorframe_deb.dds
...Texture: Common\Textures\SpecularLUT_pow36.dds

Die Datei liegt zeilenweise vor. In meinem Fall als einfaches String array.

Mein Problem ist nämlich, dass es unendlich viele nodes, subnodes und Elemente bestehend aus "Shader", "Technique", "Type" und einer variablen Anzahl von "Texture"-Strings gibt.

Ich habe bereits Klassen geschrieben die diese Elemente repräsentieren (Node, Subnode, Material und dessen Textures).

Kann mir jemand einen Anstoß geben wie ich das Verarbeiten einer solchen Datei realisieren kann?
 
Können Nodes und Subnodes auch verschachtelt sein? Also kein ein Subnode weitere Subnodes enthalten?

Ansonsten ist es doch recht straight-forward:
Bei jeder Zeile erstmal trim aufrufen um die Leerzeichen vorne und hinten zu entfernen. Dann kannst du mit startsWith prüfen womit die Zeile anfängt. Je nachdem was es ist, legst du ein neues Objekt an. Mit substring oder split am Punkt kannst du dann den Wert ermitteln und in das Objekt schreiben.
 
Hi ,und wie ist es wenn die ersten 4 Zeilen ein Objekt repräsentieren und die naechsten 4 zu einem anderen Objekt gehoeren ?
 
Können Nodes und Subnodes auch verschachtelt sein? Also kein ein Subnode weitere Subnodes enthalten?

Ansonsten ist es doch recht straight-forward:
Bei jeder Zeile erstmal trim aufrufen um die Leerzeichen vorne und hinten zu entfernen. Dann kannst du mit startsWith prüfen womit die Zeile anfängt. Je nachdem was es ist, legst du ein neues Objekt an. Mit substring oder split am Punkt kannst du dann den Wert ermitteln und in das Objekt schreiben.

Hallo!

Vielen Dank für die Antwort,...

Ein Subnode enthält keine weiteren Nodes. Es sind nur die 4 Level: Node --> Subnode --> Material --> Textures

Die Punkte habe ich selbst eingefügt um die Anzahl an whitespaces zu verdeutlichen...

Aber eine effiziente und spezielle Strategie gibt es nicht?

Also einfach:

Falls String mit 1x leerzeichen beginnt: erstelle neue node.
Falls nächster string mit 2x leerzeichen beginnt, füge subnode hinzu

Eigentlich ganz einfach,...

Ich versuchs einfach mal,...
 

Neue Beiträge

Zurück