在多个级别序列化相同的对象类型
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);
}
注意:如果在树的任何级别发生任何引用循环,序列化就会崩溃。
我正在寻找这样的 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);
}
注意:如果在树的任何级别发生任何引用循环,序列化就会崩溃。