VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。
基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。
XMLファイルをツリービューに表示したかったのでMakeTreeという関数を作成しました。この関数を使用すると、指定したXMLファイルの構造そのままをツリービューに表示することができます。
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
<?xml version="1.0" encoding="shift_jis"?> <ADDRESS_DATA> <ZIP>012-3456</ZIP> <ADDRESS>東京都港区赤坂XXX</ADDRESS> <NAME>ひろずどっとねっと</NAME> </ADDRESS_DATA>