Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net XmlSerializer在我的Windows 8应用商店应用程序中不返回任何内容_Vb.net_Windows 8_Xml Serialization - Fatal编程技术网

Vb.net XmlSerializer在我的Windows 8应用商店应用程序中不返回任何内容

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

我已经在.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
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!我明白你的意思了,帮我把事情弄清楚!