C# xml格式的日期节点为dd/mm/yyyy#

C# xml格式的日期节点为dd/mm/yyyy#,c#,xml,date,C#,Xml,Date,您好,我正在用此代码解析我的XML文档 XDocument doc = XDocument.Load(path); XElement person = doc.Descendants().Where(x => x.Name.LocalName == "Person").FirstOrDefault(); XNamespace ns = person.GetDefaultNamespace(); Dictionary<string, string> dict = person

您好,我正在用此代码解析我的
XML
文档

XDocument doc = XDocument.Load(path);

XElement person = doc.Descendants().Where(x => x.Name.LocalName == "Person").FirstOrDefault();
XNamespace ns = person.GetDefaultNamespace();

Dictionary<string, string> dict = person.Elements()
    .Where(x => x.Name.LocalName != "IdDocumentList")
    .GroupBy(x => x.Name.LocalName, y => y == null ? "" : (string)y)
    .ToDictionary(x => x.Key, y => y.FirstOrDefault());

foreach (XElement element in person.Descendants(ns + "IdDocument").FirstOrDefault().Elements())
{
    dict.Add(element.Name.LocalName, (string)element);
}

正如我所说,在为每个键选择值时,我只想重新格式化字段DateOfBirth

,检查它是否是
DateOfBirth
记录。如果是,则解析为
DateTime
,并使用
ToString
获取所需格式

var dict = person.Elements()
    .Where(x => x.Name.LocalName != "IdDocumentList")
    .GroupBy(x => x.Name.LocalName, y => y == null ? "" : (string)y)
    .ToDictionary(x => x.Key, 
                  y => y.Key == "DateOfBirth" ? 
                       DateTime.ParseExact(y.FirstOrDefault(),"yyyy-mm-dd",null).ToString("dd-mm-yyyy") : 
                       y.FirstOrDefault());
然而,我认为一个更好的解决方案是创建一个具有这些属性的自定义类,然后用xml创建一个对象。看看


我需要该字典中的所有值,它们是字符串。我收到以下错误消息:“字符串未被识别为有效的日期时间。”@СааааМаааааааМаааааа
var dict = person.Elements()
    .Where(x => x.Name.LocalName != "IdDocumentList")
    .GroupBy(x => x.Name.LocalName, y => y == null ? "" : (string)y)
    .ToDictionary(x => x.Key, 
                  y => y.Key == "DateOfBirth" ? 
                       DateTime.ParseExact(y.FirstOrDefault(),"yyyy-mm-dd",null).ToString("dd-mm-yyyy") : 
                       y.FirstOrDefault());