Announcement

Collapse
No announcement yet.

Leerzeichen in XML erzeugt Fehler

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Leerzeichen in XML erzeugt Fehler

    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

    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
    Würde mich über Hilfe freuen.

  • #2
    Also die Lösung war:

    Code:
      XMLName = Replace(TreeNodeName, " ", "_")
    Code:
      TreeNodeName = Replace(XMLName, "_", " ")
    SO hab ich das Zeichen einfach ersetzt und beim Laden wieder zurückkonvertiert

    Comment

    Working...
    X