c# - 将 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);
}
解决方案
类中的属性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; }
}
}
推荐阅读
- python-3.x - 如何使用 Python 作为实时数据流将 CSV 文件记录逐条记录发送到 Azure 事件中心
- r - 未来帧的多项式曲线拟合
- css - 如何在材料中并排对齐两个 ng-select 组件
- ros - Rospy message_filter ApproximateTimeSynchronizer 问题
- docker - Docker 由 nginx、express、letsencrypt SSL 组成 502 Bad gateway
- docker - Vue UI 无法通过 docker-compose
- laravel - “找不到类 'App\Game\User'”即使更改了提供程序
- javascript - 构建一个忽略空格的动态正则表达式
- bash - 使用 CURL 将特殊字符作为 HTTP POST 传递
- ruby-on-rails - 无法让用户确认使用设计在生产中工作