none
XML File in eine resource einbinden. RRS feed

  • Frage

  • Hallo NG,

    ich habe in meinem Project eine XML Datei welche ich gerne in die Resource einbinden möchte.

    Zurzeit habe ich diese Datei bei mir im Projekt eingebunden. Wenn ich das Projekt kompiliere und

    string[] list = Assembly.GetExecutingAssembly().GetManifestResourceNames();

    Ist die XML Datei leider nicht mit aufgeführt. Was kann ich machen?

    Danke für jeden Hinweis und Tipp.

    Grüße Ingo

    .GetExecutingAssembly()

    Freitag, 4. Januar 2013 13:35

Antworten

  • Dann stelle mal den Buildvorgang der Datei auf Eingebettete Resource und benutze folgenden Code:

            private void button1_Click(object sender, EventArgs e)
            {
                Assembly thisAssembly;
                thisAssembly = Assembly.GetExecutingAssembly();
                Stream someStream;
                someStream = thisAssembly.GetManifestResourceStream("WindowsFormsApplication44.test123.xml"); //Namespace.Resource.FileName
                //SaveStreamToFile(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\test123.xml", someStream);//Wenn du die Datei speichern willst
                StreamReader sr = new StreamReader(someStream);
                
                MessageBox.Show(sr.ReadToEnd());
                someStream.Close();
            }

            public void SaveStreamToFile(string fileFullPath, Stream stream)
            {
                if (stream.Length == 0) return;

                using (FileStream fileStream = System.IO.File.Create(fileFullPath, (int)stream.Length))
                {
                    byte[] bytesInStream = new byte[stream.Length];
                    stream.Read(bytesInStream, 0, (int)bytesInStream.Length);

                    fileStream.Write(bytesInStream, 0, bytesInStream.Length);
                }
            }
    Quelle

    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    • Als Antwort markiert IngoManthey Freitag, 4. Januar 2013 14:43
    Freitag, 4. Januar 2013 14:16
    Moderator

Alle Antworten

  • Hallo, an sich ist eine XML Datei nichts weiter als eine TextDatei mit einen speziellen Inhalt. Wenn du unter Projekt > Eigenschaften > Resourcen deine XML Datei hinzufügst, dann kannst du mit

    Properties.Resources.MyXMLFile

    den Inhalt auslesen und auch abspeichern, wenn du willst. Das ist meiner Meinung nach das einfachste und schnellste um an die Datei heran zu kommen.


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    Freitag, 4. Januar 2013 13:42
    Moderator
  • Hallo,

    danke für die Antwort, aber genau das wollte ich nicht. Ich wollte die Dateien schon als Dateien behalten. Dadurch ist alles pflegeleichter. Wenn ich den Inhalt einer Datei ändere, dann muss ich die Resources auch ändern. Mir gefällt es nicht 2 Sachen machen zu müssen.

    Grüße Ingo

    Freitag, 4. Januar 2013 13:53
  • Dann stelle mal den Buildvorgang der Datei auf Eingebettete Resource und benutze folgenden Code:

            private void button1_Click(object sender, EventArgs e)
            {
                Assembly thisAssembly;
                thisAssembly = Assembly.GetExecutingAssembly();
                Stream someStream;
                someStream = thisAssembly.GetManifestResourceStream("WindowsFormsApplication44.test123.xml"); //Namespace.Resource.FileName
                //SaveStreamToFile(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\test123.xml", someStream);//Wenn du die Datei speichern willst
                StreamReader sr = new StreamReader(someStream);
                
                MessageBox.Show(sr.ReadToEnd());
                someStream.Close();
            }

            public void SaveStreamToFile(string fileFullPath, Stream stream)
            {
                if (stream.Length == 0) return;

                using (FileStream fileStream = System.IO.File.Create(fileFullPath, (int)stream.Length))
                {
                    byte[] bytesInStream = new byte[stream.Length];
                    stream.Read(bytesInStream, 0, (int)bytesInStream.Length);

                    fileStream.Write(bytesInStream, 0, bytesInStream.Length);
                }
            }
    Quelle

    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    • Als Antwort markiert IngoManthey Freitag, 4. Januar 2013 14:43
    Freitag, 4. Januar 2013 14:16
    Moderator
  • Hallo,

    Danke

    "Buildvorgang der Datei auf Eingebettete Resource"  das war das was bei mir fehlte.

    Grüße Ingo

    Freitag, 4. Januar 2013 14:43