C# XML Deserialisierungsproblem
-
Hallo Leute
Ich bin gerade dabei ein kleines Programm in C# zu schreiben dabei benötige ich eine Art Speicherfunktion.
Deswegen habe ich mir überlegt die Variablen per "Speichern"-Button in eine XML-Datei zu serialisieren und dann wieder per "Laden"-Button zu deserialisieren.
Hier ist der Code:
C# Code---------------------------------------------------------------------
private void Speichern_Click(object sender, EventArgs e)
{
// Daten serialisieren// Neues XML Dokument erstellen
XmlTextWriter xwriter = new XmlTextWriter("savefile.xml", Encoding.Unicode);// Content
xwriter.WriteStartDocument();
xwriter.WriteStartElement("Content");// Objekt "Variable1" erzeugen
xwriter.WriteStartElement("Variable1");
xwriter.WriteString("variable1");
xwriter.WriteEndElement();// Objekt "Variable2" erzeugen
xwriter.WriteStartElement("Variable2");
xwriter.WriteString("variable2");
xwriter.WriteEndElement();xwriter.WriteEndElement();
xwriter.WriteEndDocument();
xwriter.Close();
}private void Laden_Click(object sender, EventArgs e)
{
//Daten DeserialisierenXmlDocument doc = new XmlDocument();
doc.Load("savefile.xml");
XmlElement root = doc.DocumentElement;foreach (XmlNode Variable1 in root.ChildNodes)
{
geladenedaten.Text = variable1.InnerText;
}foreach (XmlNode Variable2 in root.ChildNodes)
{
geladenedaten2.Text = variable2.InnerText;
}}
---------------------------------------------------------------------------Durch den C# Code erzeugter Code im XML Dokument-------
<?xml version="1.0" encoding="utf-16"?>
<Content>
<Variable1>variable1</Variable1>
<Variable2>variable2</Variable2>
</Content>
---------------------------------------------------------------------------Jetzt zu meinem Problem. Alles funktioniert super solange ich nur ein Objekt in
mein XML-Dokument speichere, aber habe ich mehrere Objekte(Variable1,Variable2)
dann wird immer die letzte Variable im XML Code geladen. Will ich jetzt die
Variable1 auslesen wird mir immer die Variable 2 als Wert zurückgeliefert.Da ich leider nicht sehr viel Ahnung von XML habe hoffe ich ihr könnt mir bei
diesem Problem behilflich sein..danke schonmal
-
foreach (XmlNode Variable2 in root.ChildNodes) <-- "Variable2" ist die Benennung im Code, hat aber NICHTS mit der Variable2 im XML zu tun! { geladenedaten2.Text = variable2.InnerText; }
...du solltest Variable1 bzw. Variable2 aus dem XML erstmal selektieren bzw. den Namen des Nodes auswerten
foreach (XmlNode node in root.ChildNodes) { if (node.Name=="Variable2") { geladenedaten2.Text = node.InnerText; } else if (node.Name=="Variable1") { geladenedaten.Text = node.InnerText; } }
btw: http://dotnet-snippets.de/dns/objekt-in-xml-speichern-serialisieren-SID150.aspx
-
Danke für die schnelle Antwort! funktioniert super