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

Serialize same object type at multiple levels

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

<Directory id="ID1" Name="N1">
   <Directory id="ID2" Name="N2">
      <Directory id="ID3" Name="N3">
         <Directory id="ID4" Name="N4"/>
      </Directory>
   </Directory>
</Directory>

我写了一个class-

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。

general XML .net framework 自带的序列化器是XmlSerializer。 您需要做的就是序列化根对象并将序列化的内容写入 XDocument 以供将来使用。

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

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

然后使用以下代码:

XmlSerializer serializer = new XmlSerializer(typeof(Directory));
XDocument doc = new XDocument();
using (var writer = doc.CreateWriter())
{
      serializer.Serialize(writer, rootDir);
}

注意:如果在树的任何级别发生任何引用循环,序列化就会崩溃。