多个部分公共类的XML序列化

时间:2016-07-01 11:11:03

标签: xml vb.net xml-serialization

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

我为每个类创建了新实例以填写详细信息,但似乎无法将它们一起序列化为一个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()

我似乎得到的只是一个部分类,我如何将它们组合在一起?

由于

1 个答案:

答案 0 :(得分:0)

根据XML standard,有效的XML文件必须只有一个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可能已经为您自动生成了这样的类。检查为使用所有三种标识符类型生成的类型。)

示例fiddle