2012-03-12 51 views
-2

期間不寫我想寫時間戳XML searilization

XmlSerializer xs = new XmlSerializer(object); 
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.ASCII); 
xs.Serialize(xmlTextWriter, obj); 
xmlString = ASCIIByteArrayToString(memoryStream.ToArray()) 

帶時間標記序列化的值去掉後爲什麼?以及如何我可以在c#中序列化時間戳格式值?

+3

什麼類型是時間戳?它是'DateTime'還是你的意思是'TimeSpan'? 'obj'是怎麼樣的? – svick 2012-03-12 11:16:12

+0

不,它是不是和時間戳是在db.I提供的時間格式我得到這種格式的時間01:43:12例如,但是當他序列化它不寫入空值。 – 2012-03-12 11:19:12

+0

我們需要了解更多信息以幫助您。什麼是時間戳的實際*類型*。是'串'嗎?你能告訴我們你正在序列化的類的代碼和生成的XML嗎? – svick 2012-03-12 11:22:38

回答

0

有幾件事要檢查。首先是以下行:

XmlSerializer xs = new XmlSerializer(object); 

這是無效的C#,它不會編譯。我想你的意思是:

XmlSerializer xs = new XmlSerializer(obj.GetType()); 

然後確保時間戳是這個OBJ有一個公共的getter和setter它是XML序列化的屬性。

實施例:

public class Foo 
{ 
    public DateTime Timestamp { get; set; } 
} 

然後:

var obj = new Foo 
{ 
    Timestamp = DateTime.Now 
}; 

var xs = new XmlSerializer(obj.GetType()); 
using (var stream = new MemoryStream()) 
{ 
    xs.Serialize(stream, obj); 
    string xml = Encoding.UTF8.GetString(stream.ToArray()); 
} 

生產:

<?xml version="1.0"?> 
<Foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Timestamp>2012-03-13T08:21:12.5391233+01:00</Timestamp> 
</Foo>