用特定的方法控制XML序列化格式
本文关键字:XML 序列化 格式 控制 方法 | 更新日期: 2023-09-27 18:08:33
我有一个DateTime和一个子类,我想根据XML序列化对它们进行格式化。通常,在不指定任何内容的情况下,DateTime的序列化将遵循当前文化,但我希望以某种方式格式化DateTime(即使不能反序列化),子类也是如此。
那么,给定这些类:
public class MyClass
{
public DateTime MyDateTime { get; set; }
public MySubClass TheSubClass { get; set; }
}
public class MySubClass
{
public int ID { get; set; }
public string Name { get; set; }
}
如何指定序列化方法输出:
<MyClass>
<MyDateTime>2011-9-13T10:30:00Z</MyDateTime>
<MySubClass>ID-Name</MySubClass>
</MyClass>
您是否使用XmlSerializer?如果是这样,则不需要包含[Serializable]属性,它们将被XmlSerializer忽略。您可以通过在您的类型上实现IXmlSerializable接口来定制序列化。
http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.aspx这是我的头。我没有像您那样在Xml序列化中嵌套类型-但这应该很接近。
[XmlRoot]
public class MyClass
{
[XmlElement]
public DateTime MyDateTime { get; set; }
[XmlElement]
public MySubClass TheSubClass { get; set; }
}
[XmlRoot]
public class MySubClass
{
[XmlElement]
public int ID { get; set; }
[XmlIgnore] // since you didn't include in XML snippet
public string Name { get; set; }
}
如果你正在执行简单的Xml序列化:检查MSDN XmlSerializer
我错过了我想要DateTime以某种方式格式化…我所做的是以下而不是实现IXmlSerializable
:
[XmlRoot]
public class MyClass
{
[XmlElement]
public string MyDateTime { get; set; }
[XmlIgnore]
public DateTime DT
{
get { /* return DateTime from MyDateTime */ }
set { MyDateTime = value.ToString( /* use formatting */); } // ex. ToString("yyyy, MMMM dd : hh:mm")
}
[XmlElement]
public MySubClass TheSubClass { get; set; }
}