【发布时间】:2019-07-17 07:51:06
【问题描述】:
我无法在配置元素下的同一级别中创建多个同名的 VB.NET XML 元素。我只能用“Description1”的name 创建一个attribute。我到底不明白什么?
<configuration name="Default" quantity="1">
<attribute name="Description1" value="1" />
<attribute name="Description2" value="1" />
</configuration>
我试图将属性元素更改为数组,但我想我不知道我在做什么。
Public Class transaction
<Xml.Serialization.XmlElement>
Public Property document() As document
<Xml.Serialization.XmlAttribute>
Public Property type() As String
<Xml.Serialization.XmlAttribute>
Public Property [date]() As Integer
<Xml.Serialization.XmlAttribute>
Public Property name() As String
End Class
Public Class document
<Xml.Serialization.XmlAttribute>
Public Property aliasset As String
<Xml.Serialization.XmlAttribute>
Public Property eid As String
<Xml.Serialization.XmlElement>
Public Property configuration As Configuration
End Class
Public Class configuration
<Xml.Serialization.XmlAttribute>
Public Property name As String
<Xml.Serialization.XmlAttribute>
Public Property quantity As Integer
<Xml.Serialization.XmlElement>
Public Property attribute As attribute
End Class
Public Class attribute
<Xml.Serialization.XmlAttribute>
Public Property name As String
<Xml.Serialization.XmlAttribute>
Public Property value As String
End Class
我正在尝试将此与此一起使用:
Private Sub Create_button_Click(sender As Object, e As EventArgs) Handles Create_button.Click
Dim cf As New Transactions()
cf.transaction = New transaction() With {.type = "wf_export_document_attributes", .date = 1235456, .name = "QUALITY"}
cf.transaction.document = New document() With {.aliasset = "", .eid = "1234567"}
cf.transaction.document.configuration = New configuration() With {.name = "Default", .quantity = "1"}
cf.transaction.document.configuration.attribute = New attribute() With {.name = "Description", .value = "1"}
cf.transaction.document.configuration.attribute = New attribute() With {.name = "Description2", .value = "1"}
Dim s As New System.Xml.Serialization.XmlSerializer(GetType(Transactions))
Using fs As New System.IO.FileStream("C:\temp\file.xml", System.IO.FileMode.OpenOrCreate)
s.Serialize(fs, cf)
End Using
End Sub
【问题讨论】:
-
你应该使用
Option Strict On- 我可以看到类型不匹配的一个地方:.quantity = "1"但.quantity被声明为整数。