【发布时间】:2018-11-10 16:41:39
【问题描述】:
我在 C# 中的 XML 反序列化时遇到问题。
我有以下XML:
<?xml version="1.0" encoding="utf-8"?>
<head>
<person>
<name>Jim Bob</name>
<dateOfBirth>1990-01-01</dateOfBirth>
</person>
<policy>
<number>1</number>
<pet>
<name>Snuffles</name>
<dateOfBirth>2000-01-01</dateOfBirth>
</pet>
</policy>
</head>
有了这个,我试图将它映射到以下类:
public class head
{
public policy policy { get; set; }
public person person { get; set; }
}
public class person
{
public string name { get; set; }
public DateTime dateOfBirth { get; set; }
[XmlElement("policy")]
public List<policy> policy { get; set; }
}
public class policy
{
public string number { get; set; }
[XmlElement("pet")]
public List<pet> pet { get; set; }
}
public class pet
{
public string name { get; set; }
[XmlElement("dateOfBirth")]
public DateTime dateOfBirth { get; set; } //<~~ Issue is with this property
}
问题是pet 类中的dateOfBirth 属性在反序列化时没有被填充,我不知道为什么。这是因为与person 类中的dateOfBirth 属性的命名冲突吗?
【问题讨论】:
-
您的
head类是否应该包含policy属性? -
问题在于 1) 您在
head上缺少public policy policy { get; set; }和 2)[XmlElememnt("dateOfBirth")]拼写错误并且无法编译。修复那些你的代码工作,见dotnetfiddle.net/5veH6q -
@dbc 谢谢,我已经更新了这个问题,因为这是一个快速输入的问题示例。我已纠正错字/缺失的属性,因为它们存在于完整代码中。
-
好的,但现在我无法重现该问题,请参阅dotnetfiddle.net/5veH6q。
<dateOfBirth>2000-01-01</dateOfBirth>似乎填充成功。 -
@dbc 好的,谢谢,我已经通过同一个小提琴运行了我的完整代码,我得到了同样的错误。无论如何,您已经回答了我的问题,这不是命名冲突。我会继续挑剔它!谢谢
标签: c# xml deserialization