Announcement

Collapse
No announcement yet.

List serialisieren bzw. deserialisieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • List serialisieren bzw. deserialisieren

    Hallo,
    ich habe verschiedene Listelemente die ich gern via XML serialisieren bzw. deserialisieren möchte. Wie kann ich das mit einer Methode fürs serialisieren und einer fürs deserialisieren machen?

  • #2
    Hat Microsoft schon eingebaut. Schau mal hier:

    http://support.microsoft.com/kb/815813

    Erweitern kann man das dann noch über IXmlSerializable, wenn die standardserialisierung nicht reicht.

    Comment


    • #3
      Hab sicher nicht ganz klar beschrieben was ich machen will.
      ich habe eine List<Auto> und eine List<Personen>

      ich möchte beide Listen mit jeweils einer Methode serialisieren bzw. deserialisieren. bis jetzt mache ich es so...

      private void SerializeAuto()
      {
      if (_autoList == null || _autoList.Count == 0)
      return;
      _xmlSerializer = new XmlSerializer(typeof(List<Configuration>));
      TextWriter textWriter = new StreamWriter(@"auto.xml");
      _xmlSerializer.Serialize(_textWriter, _autoList);
      textWriter.Close();
      }

      private void DeserializeAuto()
      {
      if (!File.Exists(@"auto.xml"))
      {
      this._autoList = new List<Auto>();
      return;
      }
      _xmlSerializer = new XmlSerializer(typeof(List<Auto>));
      _textReader = new StreamReader(@"auto.xml");
      _autoList = (List<Auto>)_xmlSerializer.Deserialize(_textReader );
      _textReader.Close();
      }

      Die gleiche Methode habe ich dann nochmal für Person. Nun möchte ich beide Listen mit einer Methode...

      Grüße und Danke schonmal

      Comment


      • #4
        Die gleiche Methode habe ich dann nochmal für Person. Nun möchte ich beide Listen mit einer Methode...
        Ähm, rufe die beiden Methoden von einer weiteren Methode aus auf und benutzte dann diese Methode bzw. pack den Code der beiden Methode in eine Neue

        Oder willst du uns eigentlich fragen wie man den Inhalt der beiden Listen in eine Datei serialisiert? Oder wo ist dein Problem?

        Comment


        • #5
          Naja ich dachte an sowas...

          SerializeList(List<TypEgal> list, string filenam)
          {

          }

          und an diese Methode möchte ich die Liste List<Person> und die List<Auto> übergeben ...
          Ich hoffe ich habs nun verständlicher erklärt

          Comment


          • #6
            Ah. Habe verstanden.

            [Highlight=C#]class Program
            {
            static void Main(string[] args)
            {
            List<int> test1 = new List<int>() { 3, 7, 8, 9, 0 };
            List<string> test2 = new List<string>() { "Hallo", "Welt" };

            SerializeAsXml(test1, @"c:\test\nirvana1.xml");
            SerializeAsXml(test2, @"c:\test\nirvana2.xml");
            }

            private static void SerializeAsXml<T>(List<T> list, string path)
            {
            var xmlSerializer = new XmlSerializer(typeof(List<T>));
            using (var textWriter = new StreamWriter(path))
            xmlSerializer.Serialize(textWriter, list);
            }
            }[/Highlight]

            Comment


            • #7
              Genau das meinte ich... Danke schonmal
              und wie sieht das dann mit dem Deserialisieren aus?

              Comment


              • #8
                [Highlight=C#]static void Main(string[] args)
                {
                List<int> test1 = new List<int>() { 3, 7, 8, 9, 0 };
                List<string> test2 = new List<string>() { "Hallo", "Welt" };

                SerializeAsXml(test1, @"c:\test\nirvana1.xml");
                SerializeAsXml(test2, @"c:\test\nirvana2.xml");

                List<int> test3 = DeserializeFromXml<int>(@"c:\test\nirvana1.xml");
                List<string> test4 = DeserializeFromXml<string>(@"c:\test\nirvana2.xml" );
                }

                private static void SerializeAsXml<T>(List<T> list, string path)
                {
                var xmlSerializer = new XmlSerializer(typeof(List<T>));
                using (var textWriter = new StreamWriter(path))
                xmlSerializer.Serialize(textWriter, list);
                }

                private static List<T> DeserializeFromXml<T>(string path)
                {
                if (!File.Exists(path))
                return new List<T>();
                var xmlSerializer = new XmlSerializer(typeof(List<T>));
                using (var textReader = new StreamReader(path))
                return (List<T>)xmlSerializer.Deserialize(textReader);
                }[/Highlight]

                Comment


                • #9
                  Hatte es auch gerade hinbekommen, danke für die Hilfe...

                  Comment


                  • #10
                    stand das nicht auch in meinem Beispiel? o.O

                    Comment


                    • #11
                      Wo? Da Problem war eher wie eine generischer Methodenaufruf aussieht und nicht wie man serialisiert/deserialisiert.

                      Comment

                      Working...
                      X