2011-12-27 5 views
-5

У меня есть два объекта - Книга и полка.Сериализация не вложенных объектов как вложенных

class Book 
{ 

} 

class Shelf 
{ 

} 

Как вы можете видеть, они не являются внутренними.

Как сериализовать их, так что я получаю XML, который выглядит следующим образом:

<Book bookAttribute=""> 
    <Shelf>bla</Shelf> 
    <Shelf>bla1</Shelf> 
</Book> 
+3

Учитывая, что в вашем примере нет отношений, а также информации bla, bla1 и ничего о bookAttribute в вашем примере, мне трудно читать ваши мысли и придумывать решение. –

+0

Не говоря уже о том, что в XML есть 1 книга и 2 полки ... Здесь вам нужно больше информации! –

+1

Вы уверены, что ищете сериализацию? Похоже, вы просто пытаетесь создать XML-документ. В таком случае, да, это возможно. Если вы действительно после сериализации, то ваша объектная модель должна будет отразить XML, который вы ожидаете написать. –

ответ

0

Я собираюсь взять трещину в этом здесь и предположим, что с информацией вы дали вам нужно классовая структура, как это:

class Book 
{ 
    [XmlAttribute("bookAttribute")] 
    public string bookAttribute = ""; 

    [XmlElement("Shelf")] 
    List<Shelf> Shelves = new List<Shelf>(); 
} 

class Shelf 
{ 

} 

Тогда при создании программной взаимосвязи между книгой и полками (который, кажется, назад ко мне, - но я не знаю, что весь сценарий), вы можете затем цикл его во время вашего «Сохранить» для записи в формате XML.

В том случае, если исходные структуры не могут быть изменены, вы можете наследовать классы от них:

class ExpandedBook: Book 
{ 
    [XmlAttribute("bookAttribute")] 
    public string bookAttribute = ""; 

    [XmlElement("Shelf")] 
    List<Shelf> Shelves = new List<Shelf>(); 
} 

... если не запечатан класс, в этом случае вам придется создавать уродливые массивы массивы.

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