You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
3.4 KiB
76 lines
3.4 KiB
'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
|