1、首先类需要增加[Serializable]标识
2、类实现IXmlSerializable接口
下面是重写ReadXml和WriteXml方法
public void ReadXml(XmlReader reader)
{reader.ReadStartElement(reader.LocalName);while (reader.Read()){if (reader.Name == "TimeType" && reader.NodeType == XmlNodeType.EndElement){return;}if (reader.NodeType != XmlNodeType.Element) continue;bool result;switch (reader.Name){case "Year":result = reader.Read();if (result){m_year = int.Parse(reader.Value);}break;case "Mon":result = reader.Read();if (result){m_mon = int.Parse(reader.Value);}break;case "Day":result = reader.Read();if (result){m_day = int.Parse(reader.Value);}break;case "Hour":result = reader.Read();if (result){m_hour = int.Parse(reader.Value);}break;case "Min":result = reader.Read();if (result){m_min = int.Parse(reader.Value);}break;case "Second":result = reader.Read();if (result){m_sec = int.Parse(reader.Value);}break;case "Millisecond":result = reader.Read();if (result){m_milisec = int.Parse(reader.Value);}break;case "Nanosecond":result = reader.Read();if (result){m_nanosec = int.Parse(reader.Value);}break;}}
}public void WriteXml(XmlWriter writer)
{writer.WriteStartElement("TimeType");writer.WriteElementString("Year", Year.ToString());writer.WriteElementString("Mon", Month.ToString());writer.WriteElementString("Day", Day.ToString());writer.WriteElementString("Hour", Hour.ToString());writer.WriteElementString("Min", Minute.ToString());writer.WriteElementString("Second", Second.ToString());writer.WriteElementString("Millisecond", Millisecond.ToString());writer.WriteElementString("Nanosecond", Nanosecond.ToString());writer.WriteEndElement();
}