'Klaus D. Raudszus / April 2005 (VB.Net 2003) / ergänzt Mai 2007 (VB 2005) Imports System.Xml Imports System.IO Public Interface IXmlWorker Sub XmlToTreeView(ByVal trv As TreeView, ByVal fileName As String) Sub AddTreeNode(ByVal currTreeNode As TreeNode, ByVal currXmlNode As XmlNode) Sub TreeViewToXml(ByVal trv As TreeView, ByVal fileName As String) Sub AddXmlNode(ByVal currXmlNode As XmlNode, ByVal currTreeNode As TreeNode) End Interface Public Class XMLWorker Implements IXmlWorker Private m_Trv As TreeView Private m_XmlDoc As XmlDocument Public Sub New() End Sub 'Xml-Document einlesen mit Hilfe des rekursiven Methodenaufrufes In AddTreeNode Public Overridable Sub XmlToTreeView(ByVal trv As TreeView, ByVal fileName As String) Implements IXmlWorker.XmlToTreeView If (File.Exists(fileName) AndAlso (Not trv Is Nothing)) Then Me.m_Trv = trv Me.m_Trv.BeginUpdate() Me.m_XmlDoc = New XmlDocument Me.m_XmlDoc.Load(fileName) Dim ien As IEnumerator = Me.m_XmlDoc.DocumentElement.ChildNodes.GetEnumerator While ien.MoveNext Me.AddTreeNode(Nothing, DirectCast(ien.Current, XmlNode)) End While Me.m_Trv.EndUpdate() End If End Sub Protected Overridable Sub AddTreeNode(ByVal currTreeNode As TreeNode, ByVal currXmlNode As XmlNode) Implements IXmlWorker.AddTreeNode Dim currentNode As TreeNode = Nothing Dim nodeText As String = XmlConvert.DecodeName(currXmlNode.Name) If (currTreeNode Is Nothing) Then currentNode = Me.m_Trv.Nodes.Add(nodeText) Else If nodeText.Equals("#text") Then Dim nt As String = XmlConvert.DecodeName(currXmlNode.Value) currentNode = currTreeNode.Nodes.Add(nt) Else currentNode = currTreeNode.Nodes.Add(nodeText) End If End If Dim ien As IEnumerator = currXmlNode.ChildNodes.GetEnumerator While ien.MoveNext Me.AddTreeNode(currentNode, DirectCast(ien.Current, XmlNode)) End While End Sub '########################################################################################### 'TreeView auslesen mit Hilfe des rekursiven Methodenaufrufes In AddXmlNode Public Overridable Sub TreeViewToXml(ByVal trv As TreeView, ByVal fileName As String) Implements IXmlWorker.TreeViewToXml Me.m_XmlDoc = New XmlDocument Dim docRootNode As XmlNode = Me.m_XmlDoc.CreateNode(XmlNodeType.Element, "TREEVIEW", "") Me.m_XmlDoc.AppendChild(docRootNode) Dim ien As IEnumerator = trv.Nodes.GetEnumerator While ien.MoveNext Me.AddXmlNode(docRootNode, DirectCast(ien.Current, TreeNode)) End While Me.m_XmlDoc.Save(fileName) End Sub Protected Overridable Sub AddXmlNode(ByVal currXmlNode As XmlNode, ByVal currTreeNode As TreeNode) Implements IXmlWorker.AddXmlNode Dim nodeText As String = XmlConvert.EncodeName(currTreeNode.Text) Dim newXmlNode As XmlNode = Me.m_XmlDoc.CreateNode(XmlNodeType.Element, nodeText, "") currXmlNode.AppendChild(newXmlNode) Dim ien As IEnumerator = currTreeNode.Nodes.GetEnumerator While ien.MoveNext Me.AddXmlNode(newXmlNode, DirectCast(ien.Current, TreeNode)) End While End Sub End Class