![]() |
1
1
现在您知道了输入XML的外观。 一般来说,只要您不搞砸让您对序列化XML的格式进行控制的各种属性,那么作为值类型的每个属性都将如下所示:
作为引用类型的每个属性都将如下所示:
等等…
因此,在您的示例中,我们希望XML反序列化为类型为的对象
你真正想要的是
但是 所有这些都是在担心错误的事情 . 您不应该将注意力集中在希望XML看起来像什么。您应该关注对象模型的外观。这样做,XML序列化格式将自行处理。 |
![]() |
2
4
有两件事可以从XML中跳出来。如果我们讨论的是C序列化,则您的对象必须具有类似于spellOne、spellTwo的属性,以及排名“第一”、“第二”、“第三”和“第四”。 现在,如果这是在石头上设置的,并且不可能增加/减少等级和或咒语的数量,那可能并不可怕。但是,如果你为某种类型的字符添加了一个拼写3,或者第5等级,你就必须更新你的对象。 我可能会提出一些建议
然后,拼写结构可以是相同的,您可以拥有一个C对象,该对象具有一个列表,然后将被序列化/反序列化。 除此之外,您的格式看起来还不错。 您可以尝试创建一个简单的小控制台应用程序,创建您的拼写对象,然后将其转换为XML。看看它输出的结构,这将使您对如何格式化它有一个很好的了解。 |
![]() |
3
2
我过去做这类事情的一种方法是采用相反的方法——用我满意的结构编写域对象,然后将其序列化为XML。完成之后,我将为它编写一个XSD,以便以后可以方便地手工编辑XML。我采用这种方法是因为拥有域对象的权利更为重要,我并不真正关心XML是什么样子的,尤其是当我有了XSD之后。 |