![]() |
Brauche Hilfe bei einem Parser
Hallo,
ich habe folgendes Problem: Ein Dokument ist in etwa so aufgebaut:
Code:
Wie oben zusehen ist, gibt es Objekte die nur Werte beinhalten und Objekte die aus Unterobjekten bestehen. Die möchte ich nun programmiertechnisch [c#] in Objekte speichern und die Objekte in einer Liste verwalten.
object objektname1: Typ1 //Irgendein Objektname und Typ
Wert1 = 1 //irgendeine Bezeichnung und irgendein Wert Wert2 = 2 //irgendeine Bezeichnung und irgendein Wert ... end object objektname2: Typ2 object objektname3: Typ3 Wert1 = 1 Wert2 = 2 ... end end Mein Objekt besteht zur Zeit aus einem String Name und String Typ sowie einer Liste vom Typ ValueObject. ValueObject besteht wiederum aus string Valuename und string Value. So kann ich nun den Namen und den Typ des Objektes anlegen und eine nicht definierte Menge von Values in der Liste des Objektes anlegen.
Code:
Um nun auch die Unterobjekte zu speichern, habe ich gedacht, ich füge eine weitere Liste hinzu die von gleichen Typ wie das Objekt ist. Bis dahin ja kein Problem. Ich kann dann ein Objekt definieren, mit dessen Namen und Typ, und es der Liste hinzufügen. Wie füge ich diesem Unterobjekt nun aber die nicht definierte Menge an Werten hinzu? Es kann ja mehrere Unterobjekte geben und wie kann ich sicher sein das ich gerade dem richtigen Unterobjekt die Werte zuweise?
using System;
using System.Collections.Generic; using System.Text; namespace ParsIni { class StFctObject { private string ObjName; private string ObjType; //Liste mit Werteobjekten List<StFctValueObject> StFctValueObjList = new List<StFctValueObject>(); public void SetObjName(string ObjNameToSet) { ObjName = ObjNameToSet; } public string GetObjName() { return ObjName; } public void SetObjType(string ObjTypeToSet) { ObjType = ObjTypeToSet; } public string GetObjType() { return ObjType; } public void SetStFctValueObject(string NameToSet, string ValueToSet) { StFctValueObject MyStFctValueObject = new StFctValueObject(); MyStFctValueObject.SetName(NameToSet); MyStFctValueObject.SetValue(ValueToSet); StFctValueObjList.Add(MyStFctValueObject); } public int ValueCount() { int count = StFctValueObjList.Count; return count; } public string GetStFctValueObjName(int i) { return StFctValueObjList[i].GetName(); } public string GetStFctValueObjValue(int i) { return StFctValueObjList[i].GetValue(); } } class StFctValueObject { private string Name; private string Value; public void SetName(string NameToSet) { Name = NameToSet; } public string GetName() { return Name; } public void SetValue(string ValueToSet) { Value = ValueToSet; } public string GetValue() { return Value; } } } Ich hoffe das Problem ist verständlich... Gruß dragi |
Re: Brauche Hilfe bei einem Parser
Deine Frage verstehe ich nicht wirklich, es ist doch eigentlich genau das gleiche wie beim bisherigen Parsen. Du parst ein Objekt und findest nun in diesem "object". Also erstellst du ein Unterobjekt, fügst es dem Überobjekt hinzu und die nächsten Werte bis zum "end" in eben jenes Unterobjekt ein. Danach kommt ggf. ein weiteres Unterobjekt oder die Werteliste.
PS: Hast du schonmal etwas von Propertys gehört :gruebel: ? Felder und Parameter sollte man übrigens klein schreiben. Und wenn du nächstes Mal die richtigen Tags verwenden würdest, wäre es auch nicht schlecht. |
Re: Brauche Hilfe bei einem Parser
Ansich hast du recht. Sobald ich nun aber das Unterobjekt hinzugefügt habe, weiß ich nciht wie ich darauf zugreifen soll. Woher kenne ich den Index des Unterobjektes?
Was meinst du mit Tags? Gruß dragi |
Re: Brauche Hilfe bei einem Parser
Zitat:
Zitat:
Code:
Formatierter C++ und C#-Quellcode: [c]c#-code[/c]
|
Re: Brauche Hilfe bei einem Parser
Du hast vollkommen Recht! Ich habe da viel zu kompliziert gedacht!
Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz