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
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 ... 🙂
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
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.
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?
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.
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?
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.
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.
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