2012-12-07 25 views
0

在.NET中使用XmlSerializer的,但試圖序列數據返回到XML文件變得令人沮喪的我已經成功反序列化我的XML文件。當我嘗試序列化我的類時,我只獲取沒有子元素的xml的根標記。我如何序列化所有對象以獲取正確的xml數據?我曾經在某個地方看到有人建議添加要在一個集合中序列化的類,然後序列化該集合,但是我無法圍繞這個集合進行包裝,或者有沒有更簡單的方法呢?任何幫助表示讚賞!這裏是我的代碼:XmlSerializer的返回沒有在我的Windows 8 Store應用

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 
+0

你能證明你的'正被序列化Data'類? – Kratz

+0

顯示數據類定義 – Pawel

+0

我已經加入數據類 – em007

回答

0

這是你的問題這裏,<XmlRoot("DATA", [Namespace]:="", IsNullable:=False)>。當設置爲false時,IsNullable屬性將忽略項目的XML(如果它們不相等)。如果設置IsNullable爲真,那麼它會發出這樣<ListRoot xsi:nil = "true" />的標籤。在你的代碼示例,因爲你剛剛創建了一個新的Data類這樣Dim target As New Data(),所有的成員都是Nothing默認。由於您設置了IsNullable = False,因此您應該只能看到該根標記,並且這將是數據的有效序列化。

+0

那麼,如何序列化數據回XML,而無需創建一個新的數據類? – em007

+0

@ em007,我不確定我明白你的意思。您應該序列化具有要保存的數據的Data類。在你的例子中,你創建一個新的空白數據類並對其進行序列化,這就是爲什麼輸出大部分是空的。 – Kratz

+0

我明白你的意思是獲取空數據,因爲我正在創建一個空白Data類。但是,我怎樣才能在不創建新數據類的情況下序列化Data類? – em007

相關問題