【问题标题】:XML serialization for multiple Partial Public Classes多个部分公共类的 XML 序列化
【发布时间】:2016-11-03 18:40:51
【问题描述】:

我在尝试序列化使用 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()

我似乎得到的只是一个部分类,我怎样才能将它们组合在一起?

谢谢

【问题讨论】:

    标签: xml vb.net xml-serialization


    【解决方案1】:

    根据XML standard,一个有效的XML文件必须只有一个root element,例如:

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

    听起来您想创建一个具有三个连续独立根的 XML 文件,分别对应于 Identifier、id2 和 id3。这样的文件会违反标准,因此XmlSerializer 没有提供创建这样的文件的方法。

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

    Public Class IdContainer
        Public Property Identifier() As Identifier
    
        Public Property id2() As id2
    
        Public Property id3() As id3
    End Class
    

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

    示例fiddle。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-17
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 2010-10-15
      • 1970-01-01
      • 2013-05-15
      相关资源
      最近更新 更多