Laden...

Konfigurationsdatei über XML realisieren

Erstellt von ChMaster vor 16 Jahren Letzter Beitrag vor 16 Jahren 6.893 Views
ChMaster Themenstarter:in
26 Beiträge seit 2008
vor 16 Jahren
Konfigurationsdatei über XML realisieren

Servus Zusammen,

habe mir mal die Mühe gemacht und eine kleine "XmlSetting" Klasse geschrieben.

Was mich dazu bewogen hat diese Klasse zu schreiben war, dass ich nicht mehr das Format einer Inidatei benutzen wollte sondern alles in eine XML speichern und ich wollte was über XML lernen und daraus entstand die "XmlSetting" Klasse.

Im Anhang befindet sich die XmlSettings.cs

Findet irgend einer einen Fehler dann lasst es mich wissen. Sollte aber keiner zu finden sein.


// Schreiben
String appdir = AppDomain.CurrentDomain.BaseDirectory;

// Mit Übergabe der Datei
XmlSettings xmlSett = new XmlSettings( appdir + "settings.xml", "MyApp", "MyVersion", "Ich", "ich@ich.de" );
xmlSett.setValue( "Sektion", "Schlüssel", "Wert" );
if( xmlSett.write() )
{
// mach was .........
}

//Ohne Übergabe der Datei
XmlSettings xmlSett = new XmlSettings( "MyApp", "MyVersion", "Ich", "ich@ich.de" );
xmlSett.setValue( "Sektion", "Schlüssel", "Wert" );
if( xmlSett.write( appdir + "settings.xml" ) )
{
// mach was .........
}

// Lesen
String appdir = AppDomain.CurrentDomain.BaseDirectory;

// Mit Übergabe der Datei
XmlSettings xmlSett = new XmlSettings( appdir + "settings.xml", "MyApp", "MyVersion", "Ich", "ich@ich.de" );
if( xmlSett.read() )
{
// mach was .........
String mystring = xmlSett.getValue( "Sektion", "Schlüssel", "Defaultwert" );
}


//Ohne Übergabe der Datei
XmlSettings xmlSett = new XmlSettings( "MyApp", "MyVersion", "Ich", "ich@ich.de" );
if( xmlSett.read( appdir + "settings.xml" ) )
{
// mach was .........
String mystring = xmlSett.getValue( "Sektion", "Schlüssel", "Defaultwert" );
}



Schlagwörter: XmlSettings, XML, Settings

Gruß ChMaster
------------ Projekte ------------
DBoxFE
DMS
First4 (Plugin developer)

Gelöschter Account
vor 16 Jahren

und warum verwendest du nicht einfach das konfigurationsmodell des .net frameworks?

edit: ps: herzlich willkommen im forum.

ChMaster Themenstarter:in
26 Beiträge seit 2008
vor 16 Jahren

Servus JAck30lena,

Konfigurationsmodell? ist ja schön und gut. Ich wollte was über XML lernen (lesen und schreiben).
Diese Klasse hatt mir einiges an Erfahrung gebracht in bezug auf XML mit dem .Net Framework.

edit: danke ... 🙂

Gruß ChMaster
------------ Projekte ------------
DBoxFE
DMS
First4 (Plugin developer)

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo ChMaster,

für dich zum Lernen war es sicher sinnvoll die Klasse zu schreiben. Und vielleicht können in diesem Sinne auch noch andere daraus Nutzen ziehen.

Was jedoch den Einsatz in eigenen Programmen angeht, sollte man tatsächlich besser das [Tutorial] Das neue Konfigurationsmodell im .NET Framework 2.0 benutzen.

herbivore

ChMaster Themenstarter:in
26 Beiträge seit 2008
vor 16 Jahren

Serbus herbivore,

danke für den Link. Ich werde mir das mal etwas genauer anschauen.

Gruß ChMaster
------------ Projekte ------------
DBoxFE
DMS
First4 (Plugin developer)

6.862 Beiträge seit 2003
vor 16 Jahren

Ich habs mal überflogen und was mir bissle umständlich vorkommt ist deine GetValue Methode. Ich finds bissle blöd dass man nen Defaultwert angeben muss, und vor allem find ichs ziemlich rumgetrickst das du durch den Defaultwert ja erst den Rückgabewert festlegst durch die Überladungen. Das täuscht so eine Art Typsicherheit vor die man gar nicht hat in XML da alles als Strings abgelegt wird. Es ist ja ohne weiteres möglich ein double zu schreiben und ihn als int zu lesen, das kracht dann. Ein wenig umgehen könnte man das ja mit dem Typ Attribut das du schreibst. Aber auch das kann nicht verhindern Werte falsch auszulesen. Deshalb würde ich persönlich bevorzugen alles als strings bzw. stringliste bei collections zu schreiben und der User muss selbst zusehen wie er seine Datenstruktur in das entsprechende Format bekommt 😉

Ansonsten find ich den Code schön sauber und klar strukturiert. Sicher ein nettes Übungs und Lernprojekt. Auf das schon vorhandene Konfigurationsmodell wurdest ja schon hingewiesen 🙂

Baka wa shinanakya naoranai.

Mein XING Profil.

ChMaster Themenstarter:in
26 Beiträge seit 2008
vor 16 Jahren

Servus talla,

danke für das wertvolle Feedback. Ja der Defaultwert ist gewollt und natürlich, ein bisschen getrickse gehört immer dazu. 😉 Und ja, dies kann man als Lerntutorial für XML sehen.

Edit:
Ich habe mir mal das Konfigurationsmodell-Tutorial durchgelesen, da kommen mir schon ein paar Fragen. Kann ich eine Sektion, einen Schlüssel und einen Wert manuell hinzufügen in dem Konfigurationsmodell, also per Programmcode?

Gruß ChMaster
------------ Projekte ------------
DBoxFE
DMS
First4 (Plugin developer)

6.862 Beiträge seit 2003
vor 16 Jahren

Nicht das ich wüsste. Das Konfigurationsmodell von .Net ist eher ein Kompilezeitdingens da ja auch Klassen erzeugt werden um auf Properties typsicher zuzugreifen.

Aber normal ist es ja auch so das eine Konfiguration nichts veränderliches ist. Klar, bestimmte Einstellungen haben eventuell keinen Wert und sind leer. Aber mit einer Konfiguration wo man nicht weiß was drin ist, kann man auch nichts anfangen.

Baka wa shinanakya naoranai.

Mein XING Profil.

ChMaster Themenstarter:in
26 Beiträge seit 2008
vor 16 Jahren

Aber normal ist es ja auch so das eine Konfiguration nichts veränderliches ist. Klar, bestimmte Einstellungen haben eventuell keinen Wert und sind leer. Aber mit einer Konfiguration wo man nicht weiß was drin ist, kann man auch nichts anfangen.

Stimmt soweit, wie ich es kenne werden Konfigurationen dazu gebraucht um sie zu ändern oder etwa nicht? Konfiguration sind doch typischerweise dynamisch bzw. variabel?

Gruß ChMaster
------------ Projekte ------------
DBoxFE
DMS
First4 (Plugin developer)

Gelöschter Account
vor 16 Jahren

ja man kann schon ändern, aber nur im sinne von werte ändern, jedoch nciht dynamisch erweitern, wie z.b. neue felder oder ähnlichem, was bei einer konfiguration auch sinnlos ist. entweder etwas ist konfigurierbar und das von anfang an oder eben nicht.

wenn ich aber daten ablegen möchte oder z.b. ganze objekte in xml ablegen möchte, dann ist serialisieren das mittel zum zweck, da es ja auch xml-serialisierung gibt.

was aber durchaus stimmt, ist, das solch ien projekt durchaus geeignet ist, um zu lernen. bzw. ist es auch ganz gut für andere, die sich damit auseinandersetzen wollen, um es zu lernen.

ChMaster Themenstarter:in
26 Beiträge seit 2008
vor 16 Jahren

Ich danke euch dreien für die nette Kritik und natürlich auch die Feedbacks. So nun weiss ich ein bisschen mehr über das Konfigurationsmodell vom .Net Framework.

Gruß ChMaster
------------ Projekte ------------
DBoxFE
DMS
First4 (Plugin developer)

0
767 Beiträge seit 2005
vor 16 Jahren

sieht interessant aus und ganz anders als mein ansatz - ich verwend für mein aktuelles hobbyprojekt auch einen eigenen settings manager und nicht das vom Framework 2.0. werd ich demnächst mal hierher (oder neben diesen thread) posten.

loop:
btst #6,$bfe001
bne.s loop
rts