HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


VB.NET 2005の開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > VB.NET 2005 Tips > コントロール > TreeView Tips メニュー

11.XMLファイルを表示する

UPDATE:2006/11/14 

<< 前のTips  次のTips >>

 

 XMLファイルをツリービューに表示したかったのでMakeTreeという関数を作成しました。この関数を使用すると、指定したXMLファイルの構造そのままをツリービューに表示することができます。

 
サンプル1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim dlgOpen As New OpenFileDialog
    dlgOpen.Filter = "XMLファイル(*.xml)|*.xml"

    'ファイルを開くダイアログを表示する
    If dlgOpen.ShowDialog = Windows.Forms.DialogResult.OK Then
        'XMLファイルを読み込む
        Dim xmlDoc As New XmlDocument
        xmlDoc.Load(dlgOpen.FileName)

        Dim xmlRoot As XmlElement = xmlDoc.DocumentElement
        Dim trvRoot As New TreeNode

        'XMLをツリーノードに変換する
        TreeView1.Nodes.Clear()
        MakeTree(xmlRoot, trvRoot)

        'XMLをツリービューに変換したノードを追加する
        TreeView1.Nodes.Add(trvRoot)
    End If
End Sub

''' <summary>
''' XMLをツリーノードに変換する
''' </summary>
''' <param name="xmlParent">変化するXMLデータ</param>
''' <param name="trvParent">変換したツリーのノード</param>
''' <remarks></remarks>
Private Sub MakeTree(ByVal xmlParent As System.Xml.XmlElement, ByRef trvParent As TreeNode)
    If xmlParent.HasChildNodes Then
        For I As Integer = 0 To xmlParent.ChildNodes.Count - 1
            If xmlParent.ChildNodes(I).GetType.ToString().IndexOf("XmlElement") >= 0 Then
                Dim xmlChild As XmlElement = xmlParent.ChildNodes(I)
                Dim trvChild As New TreeNode

                trvChild.Text = xmlChild.Name
                '子ノードがまだあるか?
                If xmlChild.HasChildNodes Then
                    MakeTree(xmlChild, trvChild)
                End If
                trvParent.Nodes.Add(trvChild)
            ElseIf xmlParent.ChildNodes(I).GetType.ToString().IndexOf("XmlText") >= 0 Then
                Dim trvChild As New TreeNode
                trvChild.Text = xmlParent.ChildNodes(I).InnerText
                trvParent.Nodes.Add(trvChild)
            End If
        Next
    End If

    '親ノードの設定
    trvParent.Text = xmlParent.Name
End Sub


 
サンプル2
<?xml version="1.0" encoding="shift_jis"?>
<ADDRESS_DATA>
    <ZIP>012-3456</ZIP>
    <ADDRESS>東京都港区赤坂XXX</ADDRESS>
    <NAME>ひろずどっとねっと</NAME>
</ADDRESS_DATA>