Zapis do pliku XML

0

Witam mam do zrobienia prosty programik zapisujacy dane do pliku. Niestety mam problem prosze spojrzec na ponizszy kod i naprowadzic czy dobrze kombinuje... Program ma wczytac z TextBox i zapisac dane po kliknieciu button1 Xml

namespace WindowsApplication1
{
[Serializable()]
public partial class Form1 : Form
{

    public string Imie;
    public string Nazwisko;


public Form1()
  {
        Imie = null;
        Nazwisko = null;
              
  }

     public Form1(SerializationInfo info, StreamingContext ctxt)
       
    {
       
    Imie = (String)info.GetValue("Imie", typeof(string));
    Nazwisko = (String)info.GetValue("Nazwisko", typeof(string));
          

}

    public void GetObjectData(SerializationInfo info, StreamingContext txt)
    {
      info.AddValue("Imie",imie);
      info.AddValue("Nazwisko", nazwisko);
     
    }

    public void Save()
    {
       
        Form1 mp = new Form1();
        mp.baza = "student";
        stream = File.Open("\\baza.xml", FileMode.Create); 
        BinaryFormatter bformatter = new BinaryFormatter(); 
        bformatter.Serialize(stream, mp);   
        stream.Close();      
    }
  

   
    private void button2_Click(object sender, EventArgs e)
    {
        this.Close();
    }

 
    private void button1_Click(object sender, EventArgs e)
    {
        this.Save();
    }

}
0

Witam,
a po co chcesz na siłę zapchać do klasy Form1 pola imię i nazwisko ;)

O wiele lepiej byłoby by stworzyć nową klasę i ją serializować.
Prosty przykład:

    [Serializable()]
    public class Person : ISerializable
    {
        private string mName;
        private string mSurname;

        public Person(SerializationInfo info, StreamingContext ctxt)
        {
            this.mName = info.GetString("Name");
            this.mSurname = info.GetString("Surname");
        }

        public Person(string name, string surname)
        {
            this.mName = name;
            this.mSurname = surname;
        }

        public Person()
            : this(String.Empty, String.Empty)
        { }

        public string Name
        {
            get { return this.mName; }
            set { this.mName = value; }
        }

        public string Surname
        {
            get { return this.mSurname; }
            set { this.mSurname = value; }
        }

        public override string ToString()
        {
            StringBuilder builder = new StringBuilder();
            builder.AppendLine("Imię: " + this.mName);
            builder.AppendLine("Nazwisko: " + this.mSurname);
            return builder.ToString();
        }

        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("Name", this.mName);
            info.AddValue("Surname", this.mSurname);
        }
    }

Prosty przykład użycia:

            Person p = new Person("Jan", "Nowak");
            Stream stream = File.Open("person.xml", FileMode.OpenOrCreate);
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(stream, p);
            stream.Position = 0;
            Console.WriteLine(((Person)formatter.Deserialize(stream)).ToString());
            stream.Close();

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1