0
序列化XML存在问题。我有一个DateTime属性的对象,其中毫秒值是990。然而,当我查看输出字符串它显示像这样...序列化XML日期时间值不正确
<ReadingsDateTime>2016-07-04T10:10:00.99Z</ReadingsDateTime>
用于将其转换为XML的代码如下,是什么继续,我无法找到发生这种情况的原因。
string xml;
try
{
var serializer = new XmlSerializerFactory().CreateSerializer(typeof(T), xmlNamespace);
using (var memoryStream = new MemoryStream())
{
var settings = new XmlWriterSettings
{
Indent = false,
NamespaceHandling = NamespaceHandling.OmitDuplicates,
CloseOutput = false,
WriteEndDocumentOnClose = true,
};
using (var xmlWriter = XmlWriter.Create(memoryStream, settings))
{
serializer?.Serialize(xmlWriter, obj);
}
memoryStream.Seek(0, SeekOrigin.Begin);
using (var steamReader = new StreamReader(memoryStream))
{
xml = steamReader.ReadToEnd();
}
}
}
catch (Exception ex)
{
throw new ApplicationException("Unable to convert to XML from an object", ex);
}
return xml;
这是一个.Net特定的'事情'。 xml被创建为发布到Api。如果这个系统是Java的话,他们会把毫秒部分当作一个分数来处理呢? – Geek
@Hyder - 它没有任何特定的.net,但这就是'XmlSerializer'如何序列化毫秒值的分数部分,这是有道理的,因为尾部'0'不添加任何有价值的东西。结果可能会有所不同,具体取决于序列化器用户以及编写者的身份,但字符串/序列化值应该能够以任何方式解析/反序列化回相同的DateTime值。就Java而言,我猜测它是相同的,但我不知道Java,因此无法肯定地说。 – Igor