Hallo Community,
ich speicher Namen von Knoten einer TreeView in einer XML Datei um Sie nach Laden des Programs wieder herstellen zu können. Diese Einträge sind dynamisch erstellbar. Nur habe ich nun ein kleines Problem. Es dürfen keine Sonderzeichen im Namen enthalten sein ansonst erhalte ich folgenden Fehler:
XMLException wurde nicht behandelt
Das ' '-Zeichen, hexidezimaler Wert 0x20, kann nicht in einen Namen aufgenommen werden.
Gibt es eine möglichkeit dies zu umgehen? Da ich gerne in der TreeView Leerzeichen hätte.
Hier mal mein Code
Würde mich über Hilfe freuen.
ich speicher Namen von Knoten einer TreeView in einer XML Datei um Sie nach Laden des Programs wieder herstellen zu können. Diese Einträge sind dynamisch erstellbar. Nur habe ich nun ein kleines Problem. Es dürfen keine Sonderzeichen im Namen enthalten sein ansonst erhalte ich folgenden Fehler:
XMLException wurde nicht behandelt
Das ' '-Zeichen, hexidezimaler Wert 0x20, kann nicht in einen Namen aufgenommen werden.
Gibt es eine möglichkeit dies zu umgehen? Da ich gerne in der TreeView Leerzeichen hätte.
Hier mal mein Code
Code:
Public Sub Save_Code() INI_WriteValueToFile("Einstellungen", "Zähler", frmMain.Zaehler, ".\Einstellungen.ini") 'Speichert den Wert der Variable Zähler in der Datei Einstellungen.ini. Dies wird unter dem Register Einstellungen, Variable Zähler abgelegt. 'Try XmlTreeView_Class.SaveToXml("Nodes.xml", frmMain.tvCodeSelect) 'Läd die Sub SaveToXML in der Klasse XMLTreeView , Übergabe Parameter sind "Nodes.xml", Me.tvCodeSelect. Hier werden die Items der TreeView abgespeichert XML_Verarbeitung.SaveCodeToXML() 'Läd im Module1 die SubRoutine SaveCodeToXML welche dazu dient den Code in einer Sepperaten XML abzuspeichern. 'Catch ex As Exception MsgBox("Codes können nicht in Umgebungen abgespeichert werden", MsgBoxStyle.Critical, "ERROR") 'Bei Irgendeinem Fehler gib diese MsgBox aus 'End Try End Sub
Code:
' TreeView-Inhalt (Nodes-Objekte) als XML-Datei speichern Public Shared Sub SaveToXml(ByVal FileName As String, ByVal TheTreeView As TreeView) Dim xDoc As New XmlDocument xDoc.LoadXml("<Nodes></Nodes>") SaveNodes(xDoc.DocumentElement, TheTreeView.Nodes) xDoc.Save(FileName) End Sub Private Shared Sub SaveNodes(ByVal xNode As XmlNode, ByVal CurrentNodes As TreeNodeCollection) For Each tn As TreeNode In CurrentNodes Debug.WriteLine(tn.Text) SaveNodes(xNode.AppendChild(xNode.OwnerDocument.CreateElement(tn.Text)), tn.Nodes) Next End Sub
Code:
Public Sub SaveCodeToXML() Dim xml As New Xml.XmlDocument() Dim xmlKD As Xml.XmlElement Dim xmlUnterKD1 As Xml.XmlElement Dim xmlUnterKD2 As Xml.XmlElement Dim xmlUnterKD3 As Xml.XmlElement Dim xmlText As Xml.XmlText xml.Load("Code.xml") xmlKD = xml.CreateElement(frmMain.tvCodeSelect.SelectedNode.Parent.Text) xmlUnterKD1 = xml.CreateElement(frmMain.tvCodeSelect.SelectedNode.Text) xmlUnterKD2 = xml.CreateElement("Beschreibung") xmlUnterKD3 = xml.CreateElement("Code") xmlText = xml.CreateTextNode(frmMain.txtBeschreibung.Text) xmlUnterKD2.AppendChild(xmlText) xmlText = xml.CreateTextNode(frmMain.rtbCode.Text) xmlUnterKD3.AppendChild(xmlText) xmlKD.AppendChild(xmlUnterKD1) xmlUnterKD1.AppendChild(xmlUnterKD2) xmlUnterKD1.AppendChild(xmlUnterKD3) xml.DocumentElement.AppendChild(xmlKD) xml.Save("Code.xml") End Sub
Comment