以下のコードを確認してください。lst
探している構造はおそらく次のとおりです。
Dim xml As XElement = <additionalData>
<nameValuePair>
<name>amount</name>
<value>10</value>
</nameValuePair>
<nameValuePair>
<name>billerId</name>
<value>4665890107880063161</value>
</nameValuePair>
<nameValuePair>
<name>billNumber</name>
<value>12434829</value>
</nameValuePair>
</additionalData>
Dim lst As New List(Of KeyValuePair(Of String, String))
For Each nameValuePair As XElement In xml.Elements
Dim name As String = nameValuePair.<name>.Value
Dim value As String = nameValuePair.<value>.Value
lst.Add(New KeyValuePair(Of String, String)(name, value))
Next
KeyValuePair を独自の別のクラスに置き換えることも、ジェネリック List 全体をより洗練されたものに置き換えることもできます。XML ファイルを使用する方法は、おそらく同じままです。
上記コード実行後の内容lst
(デバッガビュー)です。
編集- いくつかのカスタム クラスを定義する場合:
Class AdditionalData : Inherits List(Of NameValuePair)
Sub New(xml As XElement)
For Each nameValuePair As XElement In xml.Elements
Dim name As String = nameValuePair.<name>.Value
Dim value As String = nameValuePair.<value>.Value
Me.Add(New NameValuePair(name, value))
Next
End Sub
End Class
Class NameValuePair
Public ReadOnly Name As String
Public ReadOnly Value As String
Sub New(name As String, value As String)
Me.Name = name
Me.Value = value
End Sub
End Class
上記のコードを次のように変更できます。
Dim lst As New AdditionalData(xml) 'xml is inline XML file declared above
または、あなたの場合、おそらく次のようになります。
Dim lst As New AdditionalData(XDocument.Load("path_to_xml").Root)
意図的に XElement を受け入れるようにしました。このようにして、インライン XML または解析済み XML (ストリームまたはその他から) を渡したり、ディスクからロードしたりできます。XML ファイルが複雑な構造で、その一部である場合は、XML ファイルのサブセットを指定することもできますadditionalData
。