2011-12-27 78 views
-5

我有两个对象 - Book和Shelf。将非嵌套对象序列化为嵌套

class Book 
{ 

} 

class Shelf 
{ 

} 

正如你所看到的,它们不是内在的。

如何序列化他们,让我得到XML,看起来像这样:

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

考虑到你的例子中没有关系,在你的例子中没有关于bookAttribute的信息bla,bla1,也没有关系,所以我很难读懂你的想法并想出一个解决方案。 – 2011-12-27 20:10:04

+0

更不用说XML显示1本书和2个书架了......需要更多信息在这里! – 2011-12-27 20:12:33

+1

你确定你正在寻找序列化吗?看起来你只是想编写一个XML文档。在这种情况下,是的,这是可能的。如果你确实在序列化之后,那么你的对象模型将需要反映你期望写入的XML。 – 2011-12-27 20:13:37

回答

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

...除非类是密封在这种情况下,你必须创建的丑陋阵列阵列。