当前位置: 首页 > article >正文

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();
}

http://www.kler.cn/news/341118.html

相关文章:

  • 【gRPC】1—gRPC是什么
  • Python中的with关键字和文件操作
  • Linux SSH服务
  • C语言练习
  • 【AAOS】Android Automotive 10模拟器源码下载及编译
  • Springboot 阿里云对象存储OSS 工具类
  • 69. Three.js背景透明度
  • 详解机器学习经典模型(原理及应用)——条件随机场
  • 【动态规划-最长递增子序列(LIS)】力扣2826. 将三个组排序
  • 【网站架构部署与优化】HAProxy
  • Redis存储时key的设置
  • 金融壹账通亮相2024东亚保险大会 深度参与粤港澳大湾区保险创新探讨
  • 物流系统原有40T数据加上每天至少要比之前多3G数据产品,这种该怎么解决
  • DHASH感知算法计算视频相邻帧的相似度
  • 代理IP的类型及其在爬虫中的应用
  • LeetCode组合总和
  • 【PostgreSQL 】实战篇——深入讨论分区表的概念、创建和管理方法,以及其在性能优化中的应用
  • 神经网络章节感知机部分 空间中任意一点到线性分割超平面的距离公式 解释说明
  • 【c++实现tcp客户端】
  • 前端模块化CommonJs、ESM、AMD总结