Mar*_*ter 2 .net c# xml-serialization
如果我有以下XML段:
<Times>
<Time>1/1/1900 12:00 AM</Time>
<Time>1/1/1900 6:00 AM</Time>
</Times>
Run Code Online (Sandbox Code Playgroud)
相应的属性应该是什么样的,当反序列化发生时,将上述XML接受到DateTime对象列表中?
这可以将XML段反序列化为string对象列表:
[XmlArray("Times")]
[XmlArrayItem("Time", typeof(string))]
public List<string> Times { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是当我使用DateTime作为类型而不是字符串(对于List类型和XmlArrayItem类型)时,我收到以下错误:
The string '1/1/1900 12:00 AM' is not a valid AllXsd value.
谢谢!
有了DateTime,我希望问题的很大一部分是xml的格式错误; 这不是日期的xsd标准......你能影响xml吗?否则,您可能必须坚持使用字符串并在之后处理它.
更标准的xml将是:
<Times>
<Time>1900-01-01T00:00:00</Time>
<Time>1900-01-01T06:00:00</Time>
</Times>
Run Code Online (Sandbox Code Playgroud)
例如:
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
public class Data
{
[XmlArray("Times")]
[XmlArrayItem("Time")]
public List<DateTime> Times { get; set; }
static void Main()
{
XmlReader xr = XmlReader.Create(new StringReader(@"<Data><Times>
<Time>1900-01-01T00:00:00</Time>
<Time>1900-01-01T06:00:00</Time>
</Times></Data>"));
XmlSerializer ser = new XmlSerializer(typeof(Data));
Data data = (Data) ser.Deserialize(xr);
// use data
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5856 次 |
| 最近记录: |