2016-05-03 84 views
0

我正在尋找像這樣的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通緝。

+0

如果你刪除'[XmlElement(「Directory」)]中的目錄後面的空格,它會爲你生成正確的xml。 –

+0

如果您的意思是您需要刪除生成的xml的xml命名空間,請查看以下問題:http://stackoverflow.com/q/2950658/1095390 –

回答

1

.NET框架附帶的一般XML序列化器是XmlSerializer。 您只需要序列化根對象並將序列化內容寫入XDocument以供futhur使用。

添加[Serializable]屬性爲你類聲明:

[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); 
} 

注意:如果任何參考週期發生在你的樹的任何級別,序列化崩潰。

相關問題