I need a VB example explain how to use it to show the content of XML file
Hrere is a sample XML i want to show in TreeListView
Code:
<?xml version="1.0" encoding="utf-8"?>
<drives>
<drive name="C:\"><!-- show as root Node -->
<folder name="some text"><!-- show as child Node -->
<folder name="some text"><!-- show as child Node -->
<file name="some text" date="some text" size="some text"><!-- show 'name' attribute as child Node, show 'date' and 'size' as Column -->
<content>some text</content><!-- show in TextBox when parent file selected (I think this is easy for me to do -->
</file>
</folder>
</folder>
</drive>
<drive name="D:\"><!-- show as root Node -->
<folder name="some text"><!-- show as child Node -->
<folder name="some text"><!-- show as child Node -->
<file name="some text" date="some text" size="some text"><!-- show 'name' attribute as child Node, show 'date' and 'size' as Column -->
<content>some text</content><!-- show in TextBox when parent file selected (I think this is easy for me to do -->
</file>
</folder>
</folder>
</drive>
</drives>
Here is an example using treeview. To test you will need a form with a button, label, and treeview
Code:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim file As XElement '= XElement.Load("path here") 'to load from file
'file as testdata
'remove file = if loading from a file
file = <drives>
<drive name="C:\"><!-- show as root Node -->
<folder name="folder1"><!-- show as child Node -->
<folder name="folder1.1"><!-- show as child Node -->
<file name="file1" date="some text" size="some text"><!-- show 'name' attribute as child Node, show 'date' and 'size' as Column -->
<content>some text1</content><!-- show in TextBox when parent file selected (I think this is easy for me to do -->
</file>
</folder>
</folder>
</drive>
<drive name="D:\"><!-- show as root Node -->
<folder name="folder2"><!-- show as child Node -->
<folder name="folder2.1"><!-- show as child Node -->
<file name="file2" date="some text" size="some text"><!-- show 'name' attribute as child Node, show 'date' and 'size' as Column -->
<content>some text2</content><!-- show in TextBox when parent file selected (I think this is easy for me to do -->
</file>
</folder>
</folder>
</drive>
</drives>
BuildTV(file)
End Sub
Private Sub BuildTV(fileXE As XElement)
TreeView1.Nodes.Clear()
Dim nd As New TreeNode("Drives")
TreeView1.Nodes.Add(nd)
For Each dxe As XElement In fileXE.<drive>
AddNodes(nd, dxe)
Next
End Sub
Private Sub AddNodes(whNode As TreeNode, xe As XElement)
Dim nd As TreeNode
If xe.@name <> "" Then
nd = New TreeNode(xe.@name)
whNode.Nodes.Add(nd)
For Each el As XElement In xe.Elements
AddNodes(nd, el)
Next
ElseIf xe.Name.LocalName = "content" Then
whNode.Tag = xe.Value 'the tag of the file node will contain the text
Else
Stop 'error
End If
End Sub
Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect
If e.Node.Tag IsNot Nothing Then
Label1.Text = e.Node.Tag.ToString
Else
Label1.Text = ""
End If
End Sub
Thanks for your answer, unfortunately it is not what i want, i'm talking about ObjectListView (see link in first post), the source code contains an example how to use TreeListView but with file system.
After some analysis i found that the demo TreeListView uses a class named MyFileSystemInfo to read the file system, what i exactly want is how to make MyFileSystemInfo reads XML file (like the one described above) instead of file system.