У меня есть XML-клиент с полями даты, но иногда есть только даты. Мне нужен результат только с полями даты и времени и без полей даты. (Xml Я работаю со шляпой гораздо больше полей и вложен)Проанализируйте xml с преобразованием даты XDocument в datetime
Я думаю, что есть лучший способ, чем моя попытка грубой силы.
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, ">$1T00:00:00</");
}
Как генерируется XML? У вас есть контроль над этим? Вы упоминаете XDocument и Linq-to-xml - это то, как вы его генерируете? – simonalexander2005
Согласовано. Если возможно, исправление XML - это правильный способ разрешить это, а не писать код для учета недопустимого документа. Попытка исправить противоречивые данные обычно приводит к спагетти-коду и головной боли по дороге (например, когда какой-то другой формат даты заканчивается в XML, потому что владеющий разработчик не соблюдает соглашения). – DVK
Ничего не нужно исправлять и не следует исправлять. Для предотвращения ошибок необходим часовой пояс. Без часового пояса вы получите неправильную дату. Просто прочитайте даты и проанализируйте объект DateTime, который преобразует даты в правильную фактическую дату. – jdweng