【问题标题】:Serializing not-nested objects as nested将非嵌套对象序列化为嵌套
【发布时间】:2012-01-28 17:53:21
【问题描述】:

我有两个物品 - 书和书架。

class Book
{

}

class Shelf
{

}

如你所见,它们不是内在的。

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

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

【问题讨论】:

  • 考虑到你的class例子中没有任何关系,也没有bla、bla1的信息,也没有关于你例子中的bookAttribute,我很难读懂你的想法并想出一个解决方案。跨度>
  • 更不用说 XML 显示 1 本书和 2 个书架......这里需要更多信息!
  • 您确定要序列化吗?看起来您只是在尝试编写 XML 文档。在这种情况下,是的,这是可能的。如果您真的在序列化之后,那么您的对象模型将需要反映您希望编写的 XML。
  • 很乐意帮助回答,但我不确定当前表格是否可以远程回答
  • 我只能说Console.WriteLine(@"&lt;Book bookAttribute=""""&gt; &lt;Shelf&gt;bla&lt;/Shelf&gt; &lt;Shelf&gt;bla1&lt;/Shelf&gt; &lt;/Book&gt;"); :)

标签: c# serialization


【解决方案1】:

我将在这里尝试一下,并假设根据您提供的信息,您需要这样的类结构:

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

...除非类是密封的,在这种情况下你将不得不创建丑陋的数组。

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多