Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/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/XmlArray/XmlArrayItem/List Of T中的XML序列化_Xml_Vb.net_Serialization - Fatal编程技术网

VB.NET/XmlArray/XmlArrayItem/List Of T中的XML序列化

VB.NET/XmlArray/XmlArrayItem/List Of T中的XML序列化,xml,vb.net,serialization,Xml,Vb.net,Serialization,我正在编写一个生成特定xml文件的小程序 我希望xml的结构如下所示: <Root name="test" version="testV"> <property name="Items"> <property name="item1" /> <property name="item2" /> <property name="item3" /> </property> </

我正在编写一个生成特定xml文件的小程序

我希望xml的结构如下所示:

<Root name="test" version="testV">
   <property name="Items">
      <property name="item1" />
      <property name="item2" />
      <property name="item3" />
   </property>
</Root>
这是我从data.xml获得的结果

<Root name="test" version"testV">
  <property name="Items"/>
</Root>

我的问题是:

因为我希望“Items”包含多个名为“property”的元素,所以如何使其工作?我在谷歌上搜索了关于xmlArray和XmlArrayItem的内容,其中有一个T的列表,但我无法让它工作


如果您有任何建议或帮助,我将不胜感激。

您遇到的问题是,您的类结构中没有定义最低级别的元素。我建议扩展Items类的定义,以包括最低级别元素的列表,并为最低级别元素定义一个完全独立的类。我测试了这段代码,我认为它的工作方式符合您的预期:

<xmlroot("Root")> 
Public Class root

    <XmlAttribute("name")> 
    Property name As String

    <XmlAttribute("version")> 
    Property version As String

    <XmlElement("property")> 
    Property items As New items

End Class

Public Class items
    <XmlAttribute("name")> 
    Property name As String

    <XmlElement("property")> 
    Property item As List(Of oneitem)

End Class

Public Class oneitem

    <XmlAttribute("name")> 
    Property name As String

End Class

公共类根
属性名为字符串
属性版本为字符串
属性项作为新项
末级
公共类项目
属性名为字符串
属性项作为列表(属于一个项)
末级
公共一类物品
属性名为字符串
末级
Public Class Form2

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim test1 As New Root
    SerializeToXml(test1)

End Sub

Private Sub SerializeToXml(ser As Root)

    Dim ns As New XmlSerializerNamespaces
    ns.Add("", "")

    With New XmlSerializer(GetType(Root))
        Using writeStream As New StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "/data.xml")

            .Serialize(writeStream, ser, ns)
        End Using
    End With
End Sub

End Class
<Root name="test" version"testV">
  <property name="Items"/>
</Root>
<xmlroot("Root")> 
Public Class root

    <XmlAttribute("name")> 
    Property name As String

    <XmlAttribute("version")> 
    Property version As String

    <XmlElement("property")> 
    Property items As New items

End Class

Public Class items
    <XmlAttribute("name")> 
    Property name As String

    <XmlElement("property")> 
    Property item As List(Of oneitem)

End Class

Public Class oneitem

    <XmlAttribute("name")> 
    Property name As String

End Class