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());