C# : Lecture/Écriture DateTime à partir de/dans XML
J'ai besoin de savoir le meilleur moyen de l'écriture/lecture DateTime dans/à partir de xml. Devrais-je écrire directement DateTime au format XML ou DateTime.ToString() dans le XML.
Deuxième question est de savoir comment lire l'élément date à partir de xml. Peut coulée être utilisé pour cela ; (DateTime)rec.Élément("Date").valeur ou j'ai besoin pour analyser la chaîne comme ceci DateTime.Parse(rec.Élément("Date").valeur)
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la conversion d'un
XElement
ouXAttribute
avec LINQ to XML, oui... mais pas de la chaîne elle-même. LINQ to XML utilise le format XML standard, indépendamment de vos paramètres de culture.Exemple:
De sortie pour moi:
ToString
sur le DateTime. Vous obtenez le XML, ce qui dépend de la culture de l'ordinateur que vous êtes en cours d'exécution sur. Ce n' "03/05/2011" signifie - 3 Mai ou le 5 Mars? C'est ambigu sauf si vous avez les informations de format (ce qui n'est pas une partie de la valeur). Le format XML est standardisé, et ne souffre pas de ce problème.r.Element("Date").Value = XmlConvert.ToString(Date, XmlDateTimeSerializationMode.RoundtripKind);
Date.Value
- c'est juste une partie normale de l'aide nullable types de valeur. Notez que si vous utilisez le XElement constructeur au lieu de cela, que voudrais juste arriver par magie 🙂PaymentDate.HasValue? XmlConvert.ToString(PaymentDate.Value, XmlDateTimeSerializationMode.RoundtripKind) : ""
Corriger moi si vous pensez que le code n'est pas bonDateTime parsed = (DateTime) element;
en mesure de lancer un XElement DateTime? J'aurais pensé que serait la cause d'une erreur d'exécution.XElement
documentation - elle fournit une coutume de conversion explicite. Si elle n'a pas, il ne pourrait pas, au moment de la compilation.Une alternative à @Jon Skeet la réponse est de convertir la date en une chaîne à l'aide de la "aller-retour" format. Ce qui le convertit en un format qui permettra de sauver et de charger sans perdre aucune information.
Et de convertir de retour de nouveau à l'aide de DateTime.Parse(). La page que j'ai lié a des exemples pour vous montrer comment convertir vers/à partir de la chaîne de format. Tout ce que vous devez faire est de stocker cette chaîne dans votre XML. Cela vous donne plus de contrôle sur la façon dont les données sont stockées (si vous voulez plus de contrôle, qui est).
Vous pouvez utiliser le XmlConvert classe pour convertir des chaînes de caractères.