■ VisualBasic+WPF+YAML #2:読み込み方法

VBからYMALファイルを読み込みたい。
前回記事:VisualBasic+WPF+YAML #1:読み込み方法


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つを用意。
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 件のコメント:

その他の記事