C# 类型增加自定义xml序列化
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(); }