• C# xml序列化与反序列化 特性的使用


     示例,主要包括System.Xml.Serialization命名空间下的XmlRoot、XmlElement、XmlAttribute、XmlText、XmlIgnore等特性的简单使用,高级使用可自行查看msdn。

    实体类代码:

        [XmlRoot("信息")]  // 该特性标记为根节点
        public class Info
        {
            [XmlIgnore]  // 此公共属性不会被序列化
            public int Count { get; set; }
    
            public Server 服务端 { get; set; }  // 不使用标记
    
            [XmlElement("客户端")]  // List<Client> 表示有多个 '客户端' 节点
            public List<Client> Client { get; set; }
        }
    
        public class Server
        {
            [XmlAttribute("备注")]  // 节点 '服务端' 的一个名为 '备注' 的属性
            public string Note;
    
            [XmlText]  // 节点 '服务端' 的值
            public string Name;
        }
    
        public class Client
        {
            [XmlAttribute("名称")]  // 在 '客户端' 节点添加名为 '名称' 的属性
            public string Name { get; set; }
    
            [XmlElement("地址")]  // 节点 '客户端' 的子节点
            public string Adress { get; set; }
    
            [XmlElement("端口")]  // 节点 '客户端' 的子节点
            public string Port { get; set; }
    
        }
    View Code

    实例化代码:

                Info info = new Info
                {
                    Count = 2,
                    服务端 = new Server
                    {
                        Name = "用户服务",
                        Note = "无实际意义"
                    },
                    Client = new List<Client>
                    {
                        new Client
                        {
                            Name = "测试用户",
                            Adress = "192.168.1.0",
                            Port = "6666"
                        },
                        new Client
                        {
                            Name = "",
                            Adress = "192.168.1.1",
                            Port = "7777"
                        }
                    }
                };
    View Code

    序列化结果:

    <?xml version="1.0"?>
    <信息>
      <服务端 备注="无实际意义">用户服务</服务端>
      <客户端 名称="测试用户">
        <地址>192.168.1.0</地址>
        <端口>6666</端口>
      </客户端>
      <客户端 名称="">
        <地址>192.168.1.1</地址>
        <端口>7777</端口>
      </客户端>
    </信息>

    值得一提的是,在实际运用中,自定义命名空间[xmlns:......]的方法是使用XmlSerializer类的重载方法:

    public void Serialize(Stream stream, object o, XmlSerializerNamespaces namespaces);

    进行序列化,其中“namespaces”参数可由以下代码创建:

    XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces(
    new[] { new XmlQualifiedName(string.Empty, "") });

  • 相关阅读:
    iOS开发allocWithZone介绍
    如何快速的查看一段代码的执行时间
    iOS关于setContentOffset的一些细节问题
    iOS开发libz.dylib介绍
    C#窗体无法接受Keydown事件
    visual studio 2010 C#编程时 没有.NET framework 2.0目标框架的解决办法
    StringBuilder类与String类的区别
    Refresh和Invalidate的比较
    正则表达式
    Queue 先进先出队列的操作
  • 原文地址:https://www.cnblogs.com/xuanhu/p/9393534.html
Copyright © 2020-2023  润新知