我在SignUp
中进行XML
反序列化时遇到麻烦。
我有以下C#
:
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
}
类中的dateOfBirth
属性在反序列化时没有被填充,我也不知道为什么。这是由于与pet
类中的dateOfBirth
属性的命名冲突吗?
答案 0 :(得分:0)
尝试以下使用ParseExact的代码。如果仍然遇到问题,则可能必须处理DateTime为null的情况:
public class pet
{
public string name { get; set; }
private DateTime _dateOfBirth { get; set; } //<~~ Issue is with this property
[XmlElement("dateOfBirth")]
public string DateOfBirth
{
get { return _dateOfBirth.ToString("yyyy-MM-dd"); }
set { _dateOfBirth = DateTime.ParseExact(value, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture); }
}
}
答案 1 :(得分:0)
我设法通过使用[XmlElementAttribute(DataType = "date")]
字段上的dateOfBirth
属性来解决此问题。修改后的类有效,如下所示:
public class pet
{
public string name { get; set; }
[XmlElementAttribute(DataType = "date")]
public DateTime dateOfBirth { get; set; }
}