将非嵌套对象序列化为嵌套对象

时间:2011-12-27 20:06:45

标签: c# serialization

我有两个对象 - 书和书架。

class Book
{

}

class Shelf
{

}

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

如何序列化它们,以便我得到如下所示的xml:

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

1 个答案:

答案 0 :(得分: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>();
}

...除非密封了类,否则你将不得不创建丑陋的数组数组。