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