前面其实已经说过xml的序列化与反序列化,这次主要是介绍两个属性

第一个是

[XmlRootAttribute("file")]

可以修改根节点的名称为file

第二个:

[XmlElement("Item")]

 可以修改后续的类的节点为Item

我们举个例子:定义如下:

#region RecordFileBlock
    //录像文件块的xml格式定义
    [Serializable]
    [XmlRootAttribute("file")]
    public class RecordFileBlockt
    {
        public string fileSize
        {
            get;
            set;
        }
        public string fileStartTime
        {
            get;
            set;
        }
        public string fileEndTime
        {
            get;
            set;
        }
        [XmlElement("item")]
        public List<RecordFileBlockt_Item> item { get; set; }
    }
    public class RecordFileBlockt_Item
    {
        public string fileId { get; set; }
        public string filePath { get; set; }
        public string fileHead { get; set; }
        public string fileStartTime { get; set; }
        public string fileEndTime { get; set; }
    }
    #endregion

输出的字符串为:

C#之xml序列化_C#

我们把第二个:去掉

[XmlElement("Item")]

看下面的结果:

C#之xml序列化_C#_02

 多出了一个节点,如果需要减少一个节点,需要使用上面的定义

 *************************************2019-03-23************************

今天遇到一个xml反序列化的问题,就是当又namespace的时候,总是提示反序列化失败,如下图:

C#之xml序列化_C#_03

 xml如下图:

C#之xml序列化_C#_04

当把后面的xmlns去掉之后,又可以反序列化了。

一直找不到原因,后来,花了好久周,再微软的下面网址:

https://docs.microsoft.com/zh-cn/dotnet/api/system.xml.serialization.xmlserializer.deserialize?view=netframework-4.7.2

C#之xml序列化_C#_05

 找到一个如何定义的时候,增加namespace

我也尝试了一下

C#之xml序列化_C#_06

 

发现不再报错了,问题解决

*******************************************20190326****************************

今天想尝试一下,修改对了同一个group进行不同的变量进行赋值,如下图:

C#之xml序列化_C#_07

 序列化成字符串直接失败了

C#之xml序列化_C#_08