Autor Beitrag
RBS2002
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Di 02.03.10 14:40 
Hi,

ich habe eine xml in einer Propety gesichert und möchte diese nun, von dort aus, laden und beschreiben. Das Laden funktioniert schon einmal ganz gut. Leider kann ich, anscheinend den XML Stream (MemoryStream - bin momentan etwas verwirrt - also kann es auch dieser sein :D) nicht beschreiben bzw. schließen um ihn als Property zu sichern. Aber hier erst einmal der bisherige Quellcode:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Config));
        MemoryStream stream = new MemoryStream((byte[])resources.GetObject("config"));
        XmlWriter xmlWriter = new XmlTextWriter(stream, System.Text.Encoding.UTF8);
        xmlWriter.WriteProcessingInstruction("xml""version='1.0' encoding='UTF-8'");
        xmlWriter.WriteStartElement("Root");
        //xmlWriter.Close();
        stream.Seek(0,SeekOrigin.Begin);
        xmlDoc.Load(stream);
        XmlNode root = null;
        root = xmlDoc.DocumentElement;
        foreach(Datenbank datenbank in attribute.Datenbank){
          MessageBox.Show(datenbank.Bezeichnung);
          XmlNode datenbank_eintrag = xmlDoc.CreateElement("Datenbank");
          XmlElement element = xmlDoc.CreateElement("Server");
          element.InnerText = datenbank.Server;
          datenbank_eintrag.AppendChild(element);
          element = xmlDoc.CreateElement("Port");
          element.InnerText = datenbank.Port;
          datenbank_eintrag.AppendChild(element);
          element = xmlDoc.CreateElement("Bezeichnung");
          element.InnerText = datenbank.Bezeichnung;
          datenbank_eintrag.AppendChild(element);
          element = xmlDoc.CreateElement("Datenbankname");
          element.InnerText = datenbank.Name;
          datenbank_eintrag.AppendChild(element);
          element = xmlDoc.CreateElement("Tabellenprefix");
          element.InnerText = datenbank.Prefix;
          datenbank_eintrag.AppendChild(element);
          element = xmlDoc.CreateElement("Benutzername");
          element.InnerText = datenbank.Benutzername;
          datenbank_eintrag.AppendChild(element);
          element = xmlDoc.CreateElement("Password");
          element.InnerText = datenbank.Password;
          datenbank_eintrag.AppendChild(element);
          element = xmlDoc.CreateElement("Datenbanktyp");
          element.InnerText = datenbank.Typ.ToString();
          datenbank_eintrag.AppendChild(element);
          root.AppendChild(datenbank_eintrag);
        }
        xmlDoc.Save(stream);
        return true;
      }catch(Exception ex){
        MessageBox.Show(ex.Message + ex.StackTrace);
        return false;
      }


config ist dabei die byte[] Ressource (XML Datei die als byte[] abgespeichert wird, das mache ich nicht freiwillig - dazu zwingt mich SharpDevelop :D Ist ja auch vernünftig bei einer Datei). Ich bekomme entweder beim schließen des Byte-Streams einen Fehler (kann nicht geschrieben, bzw. erweitert, werden) oder beim Laden der Datei (wenn ich also das schließen rauslasse, ist im Prinzip auch logisch das dann dort etwas fehlt. Kann mir jemand weiterhelfen wie ich es besser machen könnte?

Vielen Dank und mfG
RBS2002
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 02.03.10 19:34 
In der Hilfe heißt es auch nicht zu Unrecht "Initializes a new non-resizable instance of the MemoryStream class based on the specified byte array." ;) . Benutze den Standardkonstruktor und Write oder einfach einen neuen MemoryStream zum Speichern.

PS: Du willst wieder zurück in die Ressourcen speichern? Die sollten eigentlich schreibgeschützt sein.

_________________
>λ=
RBS2002 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Do 04.03.10 23:05 
Zitat:
PS: Du willst wieder zurück in die Ressourcen speichern? Die sollten eigentlich schreibgeschützt sein.


Danke für die schnelle Antwort. Ich denke mal das wird der springende Punkt sein. Dann werde ich die Konfigurationen anders speichern müssen, wahrscheinlich als externe XML Datei...

Trotzdem danke ;)

MfG RBS2002