Десериализация xml в объект возвращает ноль - PullRequest
0 голосов
/ 21 мая 2018

Он правильно подсчитывает количество объектов, но возвращает ноль или ноль. У меня много классов, которые можно заполнить содержимым xml. Мне нужен эффективный метод для импорта xml в мое приложение C #.Мой xml-файл поврежден?

XML-файл:

<Entitati>
  <Entitate>
    <nume>asd</nume>
    <actiuni>25</actiuni>
    <valoare>2.05</valoare>
  </Entitate>
  <Entitate>
    <nume>fgh</nume>
    <actiuni>50</actiuni>
    <valoare>3.14</valoare>
  </Entitate>
  <Entitate>
    <nume>fanel</nume>
    <actiuni>35</actiuni>
    <valoare>5.15</valoare>
  </Entitate>
</Entitati>

Классы:

[XmlRoot("Entitati")]
public class Entitati
{
    [XmlElement("Entitate")]
    public List<Entitate> entitati { get; set; }
}

[XmlRoot("Entitate")]
public class Entitate
{
     [XmlElement("nume")]
     protected string nume { get; set; }
     [XmlElement("actiuni")]
     protected int actiuniDisponibile { get; set; }
     [XmlElement("valoare")]
     protected double valoareActiune { get; set; }
}

Основное:

XmlSerializer serializer = new XmlSerializer(typeof(Entitati));
using (FileStream fileStream = new 
FileStream("C:\\Users\\batrinut\\Desktop\\Entitati.xml", FileMode.Open))
{
      Entitati result = (Entitati)serializer.Deserialize(fileStream);
}

1 Ответ

0 голосов
/ 21 мая 2018

Свойства в классе Entitate не должны быть protected.

. Затем следует изменить значение на public.

namespace SOTest
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Entitati));
            using (FileStream fileStream = new FileStream("data.xml", FileMode.Open))
            {
                Entitati result = (Entitati)serializer.Deserialize(fileStream);

                Console.ReadKey();
            }
        }
    }

    [XmlRoot("Entitati")]
    public class Entitati
    {
        [XmlElement("Entitate")]
        public List<Entitate> entitati { get; set; }
    }

    [XmlRoot("Entitate")]
    public class Entitate
    {
        [XmlElement("nume")]
        public string nume { get; set; }

        [XmlElement("actiuni")]
        public int actiuniDisponibile { get; set; }

        [XmlElement("valoare")]
        public double valoareActiune { get; set; }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...