xml序列化及反序列化.net对象

序列化一个类通常添加[XmlRoot("根节点名字")] 找到要序列化的内容

对要序列化的类添加 [Serializable]属性用于序列化

对于要序列化的字段添加  [XmlElement("序列化对应的节点名字,即字段的别名")]

<Headmaster IsAssistant="false">
    private bool _isAssistant;
    [XmlAttribute("IsAssistant")]
    public bool IsAssistant
    {
        get
        {
            return _isAssistant;
        }

        set
        {
            _isAssistant = value;
        }
    }


 <Name>June</Name>
[XmlText()]
        public string Name
        {
            get
            {
                return _name;
            }

            set
            {
                _name = value;
            }
        }



 <Classes>
    <Class>
      <Teacher>
        <Name>June</Name>
        <Sex>O</Sex>
        <Age>30</Age>
      </Teacher>
      <Students>
        <Student>
          <Name>Student1</Name>
          <Sex>I</Sex>
          <Age>10</Age>
        </Student>
      </Students>
    </Class>
    <Class>
      <Teacher>
        <Name>Sam</Name>
        <Sex>I</Sex>
        <Age>32</Age>
      </Teacher>
      <Students>
        <Student>
          <Name>Student2</Name>
          <Sex>O</Sex>
          <Age>10</Age>
        </Student>
        <Student>
          <Name>Student3</Name>
          <Sex>I</Sex>
          <Age>10</Age>
        </Student>
        <Student>
          <Name>Student4</Name>
          <Sex>O</Sex>
          <Age>10</Age>
          <Skill>DB</Skill>
          <Skill>C#</Skill>
        </Student>
      </Students>
    </Class>
  </Classes>

private List<Class> _classes = new List<Class>();
    [XmlArray("Classes")]
    [XmlArrayItem("Class")]
    public List<Class> Classes
    {
        get
        {
            return _classes;
        }
    }

[Serializable]:用于标志这个类是可进行序列化的。注意此属性只能用于类定义上,另外类也可以通过实现System.Runtime.Serialization.ISerializable进行自定义序列化控制。

[XmlRoot]:用于定义xml根节点的节点名称。

[XmlElement]:用于定义类属性在序列化中对应节点的名称。

[XmlIgnore]:标志此属性不参与序列化。

[XmlArray]:通常与[XmlArrayItem]配合使用,定义数组的父节点名称与子节点名称。

原文地址:https://www.cnblogs.com/shy1766IT/p/5460436.html