在多个级别序列化相同的对象类型

时间:2016-05-03 04:44:57

标签: c# xml serialization xml-serialization

我正在寻找像这样的XML结构 -

<Directory id="ID1" Name="N1">
   <Directory id="ID2" Name="N2">
      <Directory id="ID3" Name="N3">
         <Directory id="ID4" Name="N4"/>
      </Directory>
   </Directory>
</Directory>
我写了一堂课 -

namespace Application1
{
   public class Directory
   {
      [XmlAttribute]
      public string Id { get; set; }
      [XmlAttribute]
      public string Name { get; set; }
      [XmlElement("Directory ")]
      public Dir[] Directory { get; set; }
   }
}

但是这不会以我想要的形式生成XML。

1 个答案:

答案 0 :(得分:1)

<。> .net框架附带的通用XML序列化程序是XmlSerializer。 您需要做的就是序列化根对象并将序列化内容写入XDocument以供将来使用。

为您的类声明添加[Serializable]属性:

.

然后使用以下代码:

[Serializable]
    public class Directory
    {
        [XmlAttribute]
        public string Id { get; set; }
        [XmlAttribute]
        public string Name { get; set; }
        [XmlElement("Directory")]
        public Directory[] Directories { get; set; }
    }

注意:如果任何引用周期发生在树的任何级别,序列化将崩溃。