Обновить элемент с заданным ID в XML документе - C#
Формулировка задачи:
народ помогите плз с методом Update. Он должен как бы обновить элемент с таким же ID в xml документе...но он у меня все ломает после чего и метод Read перестает работать...
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.IO; using System.Xml.Linq; namespace ConsoleApplication2 { class UserXmlDAL:ICRUD { public void Create(User u) { FileStream fs = null; List<User> l1 = new List<User>(); if (File.Exists(@"SerializationOverview.xml")) { fs = new FileStream(@"SerializationOverview.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.None); System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(List<User>)); System.IO.StreamReader file = new System.IO.StreamReader(fs); try { l1 = (List<User>)reader.Deserialize(file); } catch (Exception e) { Console.Write(e); } }else fs = new FileStream(@"SerializationOverview.xml", FileMode.Create, FileAccess.ReadWrite,FileShare.None); u.ID = l1.Count; l1.Add(u); fs.SetLength(0); System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(List<User>)); System.IO.StreamWriter file2 = new System.IO.StreamWriter(fs); writer.Serialize(file2, l1); file2.Close(); fs.Close(); } public void Read() { FileStream fs = null; List<User> l1 = new List<User>(); fs = new FileStream(@"SerializationOverview.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.None); System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(List<User>)); System.IO.StreamReader file = new System.IO.StreamReader(fs); try { l1 = (List<User>)reader.Deserialize(file); foreach (var l in l1) { Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{5}", l.ID, l.Name, l.Sex, l.Age, l.Administrator, l.Moderator); } } catch (Exception e) { Console.Write(e); } fs.Close(); } public void Upadate(User u) { FileStream fs = null; List<User> l1 = new List<User>(); if (File.Exists(@"SerializationOverview.xml")) { fs = new FileStream(@"SerializationOverview.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.None); System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(List<User>)); System.IO.StreamReader file = new System.IO.StreamReader(fs); try { l1 = (List<User>)reader.Deserialize(file); } catch (Exception e) { Console.Write(e); } if (u.ID == l1.Count) l1.Add(u); fs.SetLength(l1.Count + 1); System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(List<User>)); System.IO.StreamWriter file2 = new System.IO.StreamWriter(fs); writer.Serialize(file2, l1); file2.Close(); fs.Close(); } else Console.WriteLine("XML file doesn't exist"); }
и помогите пожалуйста с методом Delete(user u) ... а то что я потерялся уже)
Решение задачи: «Обновить элемент с заданным ID в XML документе»
textual
Листинг программы
namespace ConsApp_Xml { public class User { public int ID { get; set; } public string Name { get; set; } public Sex Sex { get; set; } public ushort Age { get; set; } public bool IsAdministrator { get; set; } public bool IsModerator { get; set; } public override string ToString() { return string.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}", ID, Name, Sex, Age, IsAdministrator, IsModerator); } } }