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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值