VB.NET/XmlArray/XmlArrayItem/List Of T中的XML序列化
我正在编写一个生成特定xml文件的小程序 我希望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> </
<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