Vb.net XmlSerializer在我的Windows 8应用商店应用程序中不返回任何内容
我已经在.Net中使用XmlSerializer成功地反序列化了我的xml文件,但是试图将该数据序列化回xml文件变得令人沮丧。当我尝试序列化我的类时,我只得到xml的根标记,没有子元素。如何序列化所有对象以获得正确的xml数据?我在某个地方见过有人建议在集合中添加要序列化的类,然后序列化该集合,但我不能完全理解这一点,或者有更简单的方法吗?感谢您的帮助!这是我的密码:Vb.net XmlSerializer在我的Windows 8应用商店应用程序中不返回任何内容,vb.net,windows-8,xml-serialization,Vb.net,Windows 8,Xml Serialization,我已经在.Net中使用XmlSerializer成功地反序列化了我的xml文件,但是试图将该数据序列化回xml文件变得令人沮丧。当我尝试序列化我的类时,我只得到xml的根标记,没有子元素。如何序列化所有对象以获得正确的xml数据?我在某个地方见过有人建议在集合中添加要序列化的类,然后序列化该集合,但我不能完全理解这一点,或者有更简单的方法吗?感谢您的帮助!这是我的密码: Public Shared Function SerializeXml() As Byte() Dim se
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
Imports System.Xml.Serialization
公共类数据
继承模型
公共属性配置()作为数据配置
得到
返回给我
结束
设置(值为DataConfiguration)
Me.\u配置=值
端集
端属性
专用配置作为数据配置
公共属性字段()作为字段
得到
返回我
结束
设置(值作为字段)
Me.\u字段=值
端集
端属性
私有_字段作为字段
公共属性ListRoot()作为列表(属于ListRoot)
得到
还给我
结束
设置(值为列表(属于ListRoot))
Me.\u ListRoot=值
端集
端属性
Private\u ListRoot作为列表(属于ListRoot)
末级
这是您的问题,。属性设置为false时,如果项目的XML值等于零,则该属性将忽略项目的XML值。如果将IsNullable
设置为True,则它将发出类似于
的标记。在代码示例中,由于您刚刚创建了一个新的Data
类,如Dim target As new Data()
,因此默认情况下,所有成员都是Nothing
。因为您已经设置了IsNullable=False
,所以应该只看到根标记,这将是一个有效的数据序列化。能否显示正在序列化的数据
类?显示数据类定义我已添加了数据类,因此如何在不创建新数据类的情况下将数据序列化回xml?@em007,我不确定我是否理解你的意思。您应该序列化包含要保存的数据的数据类。在您的示例中,您创建了一个新的空白数据类并将其序列化,这就是为什么输出大部分是空的。我明白您关于获取空白数据的意思,因为我正在创建一个空白数据类。但是我如何序列化数据类而不创建新的数据类呢?您不必创建新的数据类。假设您只是像这样反序列化了一个Dim myData=serializer.Deserialize(InStream)
,然后您像这样序列化了同一个对象serializer.Serialize(OutStream,myData)
。从理论上讲,您应该写出与读入的XML文件相同的XML文件。谢谢Kratz!我明白你的意思了,帮我把事情弄清楚!