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文件,其中包含三个顺序独立的根,分别对应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
甚至可能已经为您自动生成了这样的 class。使用所有三种标识符类型检查为任何生成的类型。)
示例 fiddle.
我在尝试序列化使用 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文件,其中包含三个顺序独立的根,分别对应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
甚至可能已经为您自动生成了这样的 class。使用所有三种标识符类型检查为任何生成的类型。)
示例 fiddle.