对象的序列化

时间:2011-05-29 13:03:58

标签: c# xml serialization

我正在尝试做一些我无法找到任何帮助的事情。我有一个类,在这个类中它代表了另外两个作为属性公开的类。我希望类的属性位于包含类的根目录下,而不是具有类名和值:

示例:

public Origin Origin { get; set; }
public Destination Destination { get; set; }

这两个定义的节点应该在XML中标记为:

<RootClass>
  <ValueFromOrigin />
  <ValueFromDestination />
</RootClass>

目前,我的序列化带回来了:

<RootClass>
  <Origin>
    <ValueFromOrigin />
  </Origin>
  <Destination>
    <ValueFromDestination />
  </Destination />
</RootClass>

我尝试将[XmlElement("RootClass")]添加到OriginDestination的属性中但是会出错,假设它因某种原因尝试复制节点。有人试过这个吗?

感谢帮助人员。

埃里克

2 个答案:

答案 0 :(得分:4)

您需要自定义序列化。如果没有标记信息,默认的序列化程序将不知道如何反序列化所有数据。

想象一下,如果这两个属性都是字符串。哪个元素属于哪个属性?

C# Custom Xml Serialization

答案 1 :(得分:1)

我认为,如果你有xml样本并且不知道如何编写类,最简单的方法是使用xsd.exe工具来生成类。

  • 首先使用命令提取shema xsd.exe your.xml
  • 第二次生成 使用生成的模式生成的类 命令 xsd.exe your.xsd / classes

当你有大的xml架构并且不想花很多时间来编写用于序列化的类时,它非常有用。