2012-03-12 2 views
-2

Я пытаюсь написатьОтметка не пишет во время XML searilization

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

после сериализованное значение с отметкой времени удаляются, почему? и как я могу сериализовать значение формата timestamp в C#?

+3

Какой это временная метка? Это «DateTime» или вы имели в виду «TimeSpan»? Как выглядит 'obj'? – svick

+0

Нет, это не так, и timestamp - это формат времени, который предоставляется в db.Я получаю время в этом формате 01:43:12, например, но когда сериализует его, он не пишет пустое значение. –

+0

Нам нужно знать больше, чем вам помочь. Каков фактический * тип * метки времени. Является ли 'string'? Не могли бы вы показать нам код класса, который вы сериализуете, и сгенерированный XML? – svick

ответ

0

Есть несколько вещей, чтобы проверить. В первую очередь:

XmlSerializer xs = new XmlSerializer(object); 

Это недопустимое C#, и оно не будет скомпилировано. Я думаю, что вы имели в виду:

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

Затем убедитесь, что Отметка это свойство на этом OBJ, который имеет публичный геттер и сеттер для того, чтобы быть 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> 
Смежные вопросы