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 件のコメント:
コメントを投稿