XML остановить перезапись / сохранить несколько записей - PullRequest
0 голосов
/ 06 мая 2020

В настоящее время я использую этот код для создания XML файла

       {
           XmlSerializer sr = new XmlSerializer(obj.GetType());
           TextWriter writer = new StreamWriter(filename);
           sr.Serialize(writer, obj);
           writer.Close();
       }

Проблема в том, что он всегда переопределяет запись, которую я сделал ранее. Как я могу сделать несколько записей и сохранить их (возможно, в Combobox / DropDownList?).

Вот остальная часть моего кода (btnSave btnLoad)

        {
            try
            {
                Daten daten = new Daten();

                daten.GAME = txtGame.Text;
                daten.PLATFORM = txtPlatform.Text;
                daten.RELEASED = txtReleased.Text;

                SaveData.SaveDaten(daten, "gameregister.xml");

            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }

        private void btnLoad_Click(object sender, EventArgs e)
        {
            if (File.Exists("gameregister.xml"))
            {
                XmlSerializer xs = new XmlSerializer(typeof(Daten));
                FileStream read = new FileStream("gameregister.xml", FileMode.Open, FileAccess.Read, FileShare.Read);
                Daten daten = (Daten)xs.Deserialize(read);

                txtGame.Text = daten.GAME;
                txtPlatform.Text = daten.PLATFORM;
                txtReleased.Text = daten.RELEASED;

                read.Close();
            }
        }

ps: Я должен использовать XML для этой конкретной c задачи.

1 Ответ

0 голосов
/ 08 мая 2020

Что касается вашего вопроса, вы хотите сериализовать несколько экземпляров в XML.

Вы можете попробовать следующий код, чтобы получить его.

   Private void BtnSave_Click(object sender,EventArgs e)
    {
    Daten daten=new Daten();
    daten.GAME=txtGame.Text;
    daten.PLATFORM=txtPlatform.Text;
    datem.RELEASED=txtReleased.Text;
    List<Daten> lisrt=new List<Daten>();
    String path=”d:\\gameregister.xml”;
    if(File.Exists(path))
    {
    StreamReader read=new StreamReader(path);
    XmlSerializer xc=new XmlSerializer(typeof(List<Daten>));
    list=(List<Daten>)xc.Deserialize(read);
    read.Close();
    Textwriter writer=new StreamWriter(path);
    list.Add(daten);
    xc.Serialize(writer,list);
    writer.Close();
    MessageBox.Show(“Serialization succeeded again!;”);
    }
    else
    {
    list.Add(daten);
    XmlSerializer xs=new XmlSerializer(typeof(List<Daten>));
    Textwriter writer=new StreamWriter(path);
    xs.Serialize(writer,list);
    writer.Close();
    MessageBox.Show(“Serialization successful!”);
    }
   }
...