Hi,
you can simplified your code. If you serialize with XmlSerializer you can use XmlSerializer to deserialize: (whole demo: x.txt)
#pragma warning disable CS8601 // Dereference of a possibly null reference.
#pragma warning disable CS8602 // Dereference of a possibly null reference.
private void SaveProductsPriceList() //to read xml fiel contents
{
var serializer = new XmlSerializer(typeof(ObservableCollection<Products>));
using (var writer = new XmlTextWriter(FilePath, Encoding.UTF8))
serializer.Serialize(writer, ProductPriceList);
}
#pragma warning disable CS8603 // Possible null reference return.
private ObservableCollection<Products> GetProductsPriceList() //to read xml fiel contents
{
var serializer = new XmlSerializer(typeof(ObservableCollection<Products>));
using (Stream str = new FileStream(FilePath, FileMode.Open))
return (ObservableCollection<Products>)serializer.Deserialize(str);
// old wrong version
//var mylist = new ObservableCollection<Products>();
//XmlDocument doc = new XmlDocument();
//doc.Load(FilePath);
//foreach (XmlElement pn in doc.SelectNodes("/Products"))
//{
// var productlist = new Products
// {
// Mainproduct = pn.LocalName.ToString(),
// Name = pn.GetAttribute("Name"),
// Price = pn.SelectSingleNode(".//ProductPrice/@Price")?.Value,
// Visible = pn.SelectSingleNode(".//ProductVisibility/@Visible")?.Value,
// NameIcon = pn.GetAttribute("DefaultIconName")
// };
// mylist.Add(productlist);
//}
//return mylist;
}