Entwickler-Ecke

IO, XML und Registry - XmlDocument Deserialisieren


timo12 - Mi 13.01.10 11:43
Titel: XmlDocument Deserialisieren
Hallo Forum,

ich möchte ein Object vom Typ XmlDocument deserialisieren. Ich habe das deserialisieren aus einer Xml-Datei schon erfolgreich inter mich gebracht, wie deserialisiere ich aber wenn ich kein eDatei, sondern ein Objekt vom Typ XmlDocument im Speicher habe. (am liebsten ohne das in eine Datei zu speichern und das zu deserialisieren).

Vielen Dank


Timo


danielf - Mi 13.01.10 12:06

Hallo,

du meinst du hast mit dem XmlDocument ein XML geladen und willst es zu einem späteren Zeitpunkt den Inhalt des XmlDocument einem Deserialisiere geben, der daraus ein Objekt macht????

Wie erstellst du den das XmlDocument bzw. dessen Inhalt? Ich kann mir aktuell keinen sinnvollen Einsatz deines Szenario vorstellen und denke du hast da einen Architekturfehler? Was willst du den machen?

Wenn du es wirklich genau so machen musst, kannst du den Xml Inhalt (der ja das Objekt in deserialisierter Form repräsentiert) in einen MemoryStream schreiben. Dieser MS kannst du dann dem XmlSerializer geben.

Gruß Daniel


timo12 - Mi 13.01.10 12:09

ich hol mal weiter aus:

an einer anderen Stelle wird aus eine klasse ein xml mit bestimmten Informationen serialisiert. Dieses xml wird in eine MS-SQl DB geschrieben. Ich möchte an anderer Stelle aus den xml-daten in meiner Db wieder eine instanz dieser klasse erstellen.


danielf - Mi 13.01.10 12:15

Und wie kommst du dann auf das XmlDocument deserialisieren?

Ich verstehe das nun so: Xml String -> MS-SQL Db -> Objekt?


danielf - Mi 13.01.10 12:21


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
            System.Xml.Serialization.XmlSerializer s = new System.Xml.Serialization.XmlSerializer(typeof(MainForm));

            System.IO.MemoryStream msOut = new System.IO.MemoryStream();

            s.Serialize(msOut, this);

            string blub = UnicodeEncoding.Unicode.GetString(msOut.GetBuffer());

            System.IO.MemoryStream ms = new System.IO.MemoryStream(UnicodeEncoding.Unicode.GetBytes(blub));

            MainForm aroundTheWorld = (MainForm) s.Deserialize(ms);


sowas? :nixweiss: