【发布时间】:2020-05-14 10:19:30
【问题描述】:
我正在尝试使用以下代码序列化 XML 文件,
using System;
using System.Xml;
using System.Xml.Serialization;
namespace TestXML
{
[Serializable]
[XmlRootAttribute("Test")]
public class Test100
{
[XmlElementAttribute("StartDate")]
public DateTime StartDate { get; set; }
[XmlElementAttribute("EndDate")]
public DateTime EndDate { get; set; }
}
class Program
{
static void Main(string[] args)
{
Test100 obj = new Test100();
try
{
XmlSerializer serializer = new XmlSerializer(typeof(Test100));
XmlReader reader = XmlReader.Create(@"C:\MyProjects\TestXML\TestXML\Test.xml");
obj = (Test100)serializer.Deserialize(reader);
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
XML 文件:
<?xml version="1.0"?>
<Test>
<StartDate>2020-01-19T00:00:00Z</StartDate>
<EndDate></EndDate>
</Test>
例外:字符串 '' 不是有效的 AllXsd 值。
提前感谢您的帮助。
【问题讨论】:
-
谢谢,我会尽快更新代码。
-
DateTime?不起作用,因为空值由xsi:nil值而不是空值表示,请参阅 Deserializing XML null dates to DateTime in C#。 -
我可以通过将数据类型 DateTime 更改为字符串来解决此问题,然后我将在许多地方进行字符串到日期的转换。 - @ 没有任何变化987654331@ 因为那些较老的问题已经回答了,我很害怕。使用“shim”字符串属性可能是唯一的方法。
-
感谢您的 cmets:csharp.wekeepcoding.com/article/23268444/…
标签: c# xml serialization xmlserializer