XML 多个部分的序列化 Public 类

XML serialization for multiple Partial Public Classes

我在尝试序列化使用 xsd.exe 工具生成的多个部分 public classes 时遇到了困难。

我为每个 class 创建了新实例来填充详细信息,但似乎无法将它们一起序列化到一个 xml 文件中。

    Dim id As New Identifier  'partial class 1
    id.Identifier_Type = "Material"
    id.Identifier_Value = "MAT/001"
    Dim id2 As New id2         'partial class 2
    id2.string = "stuff"
    id2.string2 = "more"
    id2.string3 = "Some Stuff"
    Dim id3 As New id3          'partial class 3
    id3.string ="type"

    Dim serializer As New XmlSerializer(id.GetType)

    Dim writer As TextWriter = New StreamWriter("c:\stack\text.xml")

    serializer.Serialize(writer, id)

    writer.Close()

我好像只得到了一部分class,如何将它们组合在一起?

谢谢

根据XML standard, a valid XML file must have one and only one root element,例如:

<Identifier>
    <Identifier_Type>Material</Identifier_Type>
    <Identifier_Value>MAT/001</Identifier_Value>
</Identifier>

听起来你想创建一个XML文件,其中包含三个顺序独立的根,分别对应Identifierid2id3。这样的文件会违反标准,因此 XmlSerializer 不提供创建此类文件的方法。

相反,您应该创建一个容器类型来容纳您的其他类型,并将其序列化:

Public Class IdContainer
    Public Property Identifier() As Identifier

    Public Property id2() As id2

    Public Property id3() As id3
End Class

xsd.exe 甚至可能已经为您自动生成了这样的 class。使用所有三种标识符类型检查为任何生成的类型。)

示例 fiddle.