Member 13205498 Ответов: 2

Как хранить данные нескольких пользователей в XML-файле с помощью C# без перезаписи


Привет всем, я хочу сохранить несколько пользовательских данных в xml с помощью c#, но когда пользователь дает несколько данных, только последние данные сохраняются в xml-файле. Он перезаписан в записи существования. Что я могу сделать для хранения данных нескольких пользователей ??
Так что помогите мне, ребята, решить эту проблему.

Что я уже пробовал:

using System;
using System.Xml;
namespace ReadingXML2
{
    class Class1
    {
        static void Main(string[] args)
        {
            string name, name1;
            int num, i;
            Console.Write("Number Of Student Details = ");
            num = Convert.ToInt16(Console.ReadLine());
            for (i=0; i < num; i++)
            {
                Console.Write("Name = ");
                name = Console.ReadLine();
                Console.Write("College Name : ");
                name1 = Console.ReadLine();

                XmlTextWriter writer = new XmlTextWriter("C:\\Documents\\File\\sample.xml", null);

                writer.WriteStartDocument();
                writer.WriteStartElement("log");
                writer.WriteStartElement("data");
                writer.WriteStartElement("Name");
                writer.WriteString("" + name);
                writer.WriteEndElement();
                writer.WriteStartElement("CollegeName");
                writer.WriteString("" + name1);
                writer.WriteEndDocument();
                writer.Close();
                Console.ReadLine();
            }
        }
    }
}

RickZeeland

Я вижу, что вы отметили свое собственное решение в качестве ответа, но хотя метод BindingList может показаться вам сейчас слишком сложным, я все же рекомендую хотя бы взглянуть на него. Время, потраченное на эту технику, может принести вам большую пользу на более позднем стадионе !

2 Ответов

Рейтинг:
4

Member 13205498

using System;
using System.Xml;
namespace ReadingXML2
{
    class Class1
    {
        static void Main(string[] args)
        {
            string name, name1;
            int num, i;
            Console.Write("Number Of Student Details = ");
            num = Convert.ToInt16(Console.ReadLine());
            using (XmlTextWriter writer = new XmlTextWriter("C:\\Documents\\File\\file.xml", null))
            {
                writer.WriteStartDocument();
                writer.WriteStartElement("log");
                for (i = 0; i < num; i++)
                {
                    Console.Write("Name = ");
                    name = Console.ReadLine();
                    Console.Write("College Name : ");
                    name1 = Console.ReadLine();

                    writer.WriteStartElement("data");
                    writer.WriteStartElement("Name");
                    writer.WriteString(name);
                    writer.WriteEndElement();
                    writer.WriteStartElement("CollegeName");
                    writer.WriteString(name1);
                    writer.WriteEndElement();
                    writer.WriteEndElement();

                }
                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Close();
            }
                       
        }
    }
}


Рейтинг:
0

RickZeeland

Вероятно, было бы проще использовать BindingList и сериализовать в XML.
Вот отличный пример: Подробное Руководство По Привязке Данных[^]
Если вам нужна информация о сериализации в XML, см.: [^]

Пример:

using System.Xml.Serialization;

	public static void TestSerialization()
	{
		myClass person = new myClass();
		List<myClass> listStr = new List<myClass>();

		listStr.Add(person);
		// listStr.Add(new myClass() { Check = true, Group = "GroupTwo" });

		var x = new XmlSerializer(listStr.GetType());

		using (var strWriter = new StringWriter())
		{
			x.Serialize(strWriter, listStr);
			File.WriteAllText("test.xml", strWriter.ToString());
		}
	}