2016-05-03 5 views
0

Ищу структуру XML, как это -Serialize тип и тот же объект на разных уровнях

<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 в виде I разыскивается.

+0

Если вы удалите пробел после каталога в '[XmlElement (« Directory »)], он будет генерировать правильный xml для вас. –

+0

Если вы имеете в виду, что вам нужно удалить xml пространства имен сгенерированного xml, вы можете взглянуть на этот вопрос: http://stackoverflow.com/q/2950658/1095390 –

ответ

1

Общий XML-сериализатор, который поставляется с .net framework, является 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); 
} 

Примечание: если какой-либо ссылки цикла происходит в любом уровне дерева , сбои сериализации.

Смежные вопросы