.Net で XmlSerializer を使用して xml ファイルを正常に逆シリアル化しましたが、そのデータを xml ファイルにシリアル化しようとするとイライラします。クラスをシリアル化しようとすると、子要素のない xml のルート タグのみが取得されます。すべてのオブジェクトをシリアル化して、データを含む正しい xml を取得するにはどうすればよいですか? コレクションにシリアル化するクラスを追加してから、そのコレクションをシリアル化することを誰かが提案した場所を見たことがありますが、それについて頭を包むことはできませんか、それを行う簡単な方法はありますか? どんな助けでも大歓迎です!これが私のコードです:
Public Shared Function SerializeXml() As Byte()
Dim serializer As New XmlSerializer(GetType(Data))
Dim nameSpaces As XmlSerializerNamespaces = New XmlSerializerNamespaces()
Dim mStream As New MemoryStream()
Dim result As Byte()
Dim target As New Data()
nameSpaces.Add(String.Empty, String.Empty)
serializer.Serialize(mStream, target, nameSpaces)
result = mStream.ToArray()
Return result
そして、属性を含む xml の一般的なサンプルを次に示します。
<?xml version"1.0">
<RootTag>
<ChildTag Label="Label1" Value="Value1"/>
<ChildTag Label="Label2" Value="Value2"/>
</RootTag>
編集:ここに私のデータクラスがあります:
Imports System.Xml.Serialization
<XmlRoot("DATA", [Namespace]:="", IsNullable:=False)>
Public Class Data
Inherits Model
<XmlElement("CONFIGURATION")>
Public Property Configuration() As DataConfiguration
Get
Return Me._Configuration
End Get
Set(value As DataConfiguration)
Me._Configuration = value
End Set
End Property
Private _Configuration As DataConfiguration
<XmlElement("FIELD")>
Public Property Field() As Field
Get
Return Me._Field
End Get
Set(value As Field)
Me._Field = value
End Set
End Property
Private _Field As Field
<XmlElement("LIST")>
Public Property ListRoot() As List(Of ListRoot)
Get
Return Me._ListRoot
End Get
Set(value As List(Of ListRoot))
Me._ListRoot = value
End Set
End Property
Private _ListRoot As List(Of ListRoot)
End Class