首页 > 解决方案 > 将 xml 反序列化为对象返回 null

问题描述

它正确计算对象的数量,但返回 null 或零。我有很多类要填充 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);
}

标签: c#xmlobject

解决方案


类中的属性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; }
    }
}

推荐阅读