我正在编写一个生成某些xml文件的小程序。
我希望我的xml结构如下:
<Root name="test" version="testV">
<property name="Items">
<property name="item1" />
<property name="item2" />
<property name="item3" />
</property>
</Root>
这是我的Root(节点)类
<XmlRoot("Root")>
Public Class Root
<XmlAttribute("name")>
Property Name As String = "test"
<XmlAttribute("version")>
Property Version As String = "1.0"
<XmlElement("property")>
Property Items As New Items
End Class
这是Items类
Public Class Items
<XmlAttribute("name")>
Property Name As String = "Items"
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
这是我的data.xml结果
<Root name="test" version"testV">
<property name="Items"/>
</Root>
我的问题是:
因为我希望“Items”包含多个名为“property”的元素,我该如何使用?我用谷歌搜索了一下。关于xmlArray和带有List of T的XmlArrayItem但是我无法使它工作。
我将不胜感激任何建议或帮助。
答案 0 :(得分:0)
您遇到的问题是,您的班级结构中尚未定义最低级别的元素。我建议扩展您的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