使用 XDocument 解析 xml 将日期转换为日期时间

Parse xml with XDocument convert date to datetime

我的客户 XML 有日期时间字段,但有时只有日期。我需要一个只有日期时间字段而没有日期字段的结果。 (xml 我使用的字段更多并且是嵌套的)

我认为有比我的蛮力尝试更好的方法。

xml = "<root><date>2003-07-15T10:00:00</date><enddate>2016-02-02</enddate><startdate>2000-02-10</startdate></root>";
string result = string.Empty;
if (!string.IsNullOrWhiteSpace(xml))
{
  XDocument doc = XDocument.Parse(xml);
  string xml1 = doc.ToString();
  Regex rgx = new Regex(@">(\d{4}-\d\d-\d\d)</");
  result = rgx.Replace(xml1, ">T00:00:00</");
}

你是这个意思吗?

string xml = @"<root><date>2003-07-15T10:00:00</date>
<enddate>2016-02-02</enddate>
<startdate>2000-02-10</startdate>
</root>";

  XDocument doc = XDocument.Parse(xml);

  DateTime t;
  doc
    .DescendantNodes()
    .Where (d => d.NodeType == XmlNodeType.Text && 
      DateTime.TryParse(d.ToString(),out t))
    .ToList()
    .ForEach( n => n.Parent.SetValue(DateTime.Parse(n.ToString())));