YAMLファイル
name: test
items:
- id: 1
name: item1
subitems:
- name: sub1-1
- id: 2
name: item2
subitems:
- name: sub2-1
- name: sub2-2
データクラスの準備
※ もっと良い方法がある筈だが、とりあえずは現状理解できている方法で。
とりあえず、メインクラス TestData、itemsコレクション用のItemDataクラス、subitemsコレクション用のSubItemDataクラスの3つを用意。
YAMLから読み込みオブジェクトを構築する Loadメソッド を TestDataクラスに追加した。
とりあえず、メインクラス TestData、itemsコレクション用のItemDataクラス、subitemsコレクション用のSubItemDataクラスの3つを用意。
Public Class TestData
Public Property name As String
Public Property items As New List(Of ItemData)
End Class
Public Class ItemData
Public Property id As Integer
Public Property name As String
Public Property subitems As New List(Of SubItemData)
End Class
Public Class SubItemData
Public Property name As String
End Class
YAMLから読み込みオブジェクトを構築する Loadメソッド を TestDataクラスに追加した。
Imports YamlDotNet.RepresentationModel
Public Class TestData
:
Public Sub Load()
Dim yaml As New YamlStream()
Using sr As New System.IO.StreamReader("test.yaml")
yaml.Load(sr)
End Using
Dim children = DirectCast(yaml.Documents(0).RootNode, YamlMappingNode).Children
name = DirectCast(children.Item(New YamlScalarNode("name")), YamlScalarNode).Value
For Each itemNode In DirectCast(children.Item(New YamlScalarNode("items")), YamlSequenceNode)
Dim item As New ItemData()
item.id = DirectCast(itemNode.Item(New YamlScalarNode("id")), YamlScalarNode).Value
item.name = DirectCast(itemNode.Item(New YamlScalarNode("name")), YamlScalarNode).Value
items.Add(item)
For Each subItemNode In DirectCast(itemNode.Item(New YamlScalarNode("subitems")), YamlSequenceNode)
Dim subitem As New SubItemData()
subitem.name = DirectCast(subItemNode.Item(New YamlScalarNode("name")), YamlScalarNode).Value
item.subitems.Add(subitem)
Next
Next
End Sub
End Class
次回記事:VisualBasic+WPF+YAML #3:DataGridへの表示
-- 以上 --
VisualBasic, WPF, YAML
0 件のコメント:
コメントを投稿