DateTime.Parse throwing a ArgumentNullException
本文关键字:ArgumentNullException throwing Parse DateTime | 更新日期: 2023-09-27 18:25:39
我正在尝试从XML
读取DateTime
对象,并将它们加载到Reminder对象列表中。
Datetime.Parse
正在抛出一个带有消息的Argument Null Exception
:
字符串引用未设置为字符串的实例。
这是我的代码:
private void loadReminders()
{
var xml = File.ReadAllText("Reminders.xml");
XmlReader xmlReader = XmlReader.Create(new StringReader(xml));
while (xmlReader.Read())
{
if (xmlReader.Name.Equals("Reminder") && (xmlReader.NodeType == XmlNodeType.Element))
{
Reminders.Add(new Reminder(DateTime.Parse(xmlReader.GetAttribute("Time")), xmlReader.GetAttribute("Title"), xmlReader.GetAttribute("Message")));
}
}
}
我不太清楚为什么会抛出这个异常,因为要解析的DateTime字符串显然存储在XML文件中。
<Reminders>
<Reminder>
<Time>2013-7-30 23:24</Time>
<Title>Random Reminder</Title>
<Message>Random Message</Message>
</Reminder>
</Reminders>
任何帮助都将不胜感激。
如果您决定将使用Linq的代码更改为XML,那么您可以使用以下代码:
var listTimes = doc.Elements("Reminders").Elements("Reminder").Select(s => s.Element("Time"));
foreach (var item in listTimes)
{
Console.Write(DateTime.Parse(item.Value, CultureInfo.InvariantCulture));
}
使用当前代码,您可以使用以下内容:
XmlReader xmlReader = XmlReader.Create(new StringReader(xml));
while (xmlReader.Read())
{
if (xmlReader.Name.Equals("Time") && (xmlReader.NodeType == XmlNodeType.Element))
{
Console.WriteLine(DateTime.Parse((string)xmlReader.ReadElementContentAs(typeof(string), null), CultureInfo.InvariantCulture));
}
}