Verzeichnisnamen in XML speichern

iq_wunder

Grünschnabel
Moin.

Ich stehe bei meinem Programm vor einem kleinen Problem.
Und zwar, will ich folgendes programmieren:
Der Benutzer kann über einen OpenFileDialog eine Datei auswählen und nach der Auswahl den gesamten Pfad in eine XML-Datei schreiben.

Code:
...
xml.load("vorlage.xml")
xmlElement = xml.CreateElement("vorlage")
xmlElement = xml.appendChild(TextBox1.Text)  ' TextBox1.Text ist der Pfad
xml.DocumentElement.appendChild(xmlElement)
xml.save("vorlage.xml")
...


Beim Speichern der Info in einer XML-Datei tauchen die Probleme auf. Speichere ich einen ganz "normalen" String (z.B. "abcdef") in der XML-Datei klappt es, enthält der String Sonderzeichen wie "\" (üblich bei Pfadangaben) bricht das Programm beim Laden der XML-Datei ab und sagt er kann die angegebene XML-Datei nicht finden und öffnen. Komischerweise gibt er hier einen ganz anderen Pfad an, den ich ihm vorgebe.

Wie kann ich den Pfad so verändern, dass er ihn in der XML-Datei speichert?

Hoffe ihr könnt mir helfen.

Gruß,
Steffen
 
Zuletzt bearbeitet:
Wenn du den Pfad als Attribut angegeben hast, musst du ihn escapen (Konnte so ein Problem jedenfalls bei mir so lösen).

D.h.: Aus "C:\dir\datei.ext" wird "C:\\dir\\datei.ext"
Wenn du den Pfad automatisch umwandeln möchtest, empfehle ich folgenden Code:
Code:
Dim Pfad as String = "C:\dir\datei.ext"
Dim XmlPfad as String = Text.RegularExpressions.Regex.Replace(Pfad, "\x5C", "\\")
'und wieder zurück:
Pfad = Text.RegularExpressions.Regex.Replace(XmlPfad, "\x5C\x5C", "\")
"\x5C steht für den Backslash. Da reguläre Ausdrücke den Backslash verwenden muss man ihn escapen. Natürlich würde auch \\ funktionieren aber ich habe mir das mit den ASCII-Codes so angewöhnt.
 
Zurück