我需要知道将DateTime
写入/从XML读取的最佳方式。我应该直接将DateTime
写入XML还是将DateTime.ToString()
写入XML?
第二个问题是如何从XML中读取日期元素。是否可以使用强制转换?例如:
(DateTime)rec.Element("Date").value
或者,我需要像这样解析字符串吗?例如:
DateTime.Parse(rec.Element("Date").value)
XElement
或XAttribute
类型进行类型转换,但不能将字符串本身强制转换。LINQ to XML使用标准的XML格式,独立于你的区域设置。
示例:
using System;
using System.Xml.Linq;
class Test
{
static void Main()
{
DateTime now = DateTime.Now;
XElement element = new XElement("Now", now);
Console.WriteLine(element);
DateTime parsed = (DateTime) element;
Console.WriteLine(parsed);
}
}
请为我输出:
<Now>2011-01-21T06:24:12.7032222+00:00</Now>
21/01/2011 06:24:12
除了 @Jon Skeet 的答案之外,另一种方法是使用 "往返" 格式 将 DateTime 转换为字符串。这将把它转换为一个格式,可以保存和加载而不会丢失任何信息。
string dataToSave = myDateTime.ToString("o");
r.Element("Date").Value = XmlConvert.ToString(Date,XmlDateTimeSerializationMode.RoundtripKind);
- Jon SkeetXElement
的文档 - 它提供了一个自定义的显式转换。如果没有这个,它会在编译时失败。 - Jon Skeet