VB XML datei verändern!

m7media

since 2001
ID: 324964
L
7 Mai 2006
855
70
Servus,

ich habe eine XML-Datei, in der steht so allerhand, und ich möchte nun was ändern. Aufgebaut ist sie wie folgt:

HTML:
<CONFIG>
<var name="meinname" value="MeinEintrag">
...
</CONFIG>

also gaaanz simple. Und nun möchte ich die Value von dem Eintrag mit dem namen "meinname" mit dem Inhalt eines Textfeldes (Textbox1) ersetzen und das ganze dann speichern. Das schaff ich derzeit nicht :-? Mag mir jemand einen Codeschnipsel zuwerfen oder sowas? :)
 
Vielleicht hilft es dir ja weiter, wenn ich dir ne Vorgehensweise nenne. (hab um die uhrzeit kein bock, mein #Dev anzuschmeißen :p)

- Datei öffnen
- XML-Dokument auslesen (XmlDocument ... weißt schon)
- XML-Dokument beliebig editieren. (MyXmlDoc.Nodes[0].setProperty oder sowas. habs grad net im Kopf)
- Alte datei leer öffnen. (Also quasi neu erstellen)
- XML-Writer drauf packen.
- XML-Dokument reinschreiben.

Also so würd ichs probieren. Vielleicht kommste damit schon weiter :)
Wenn nich, werd ich mich morgen (also heute o_o) nachmittag mal kurz dransetzen und dir nen codeschnipsel basteln :)

Grüße
JuliusCaesarIV
 
Ist natürlich auch ne möglichkeit, ich werds mal testen :) Kannst natürlich auch n Codeschnipsel posten, damit ich mir das bessere (und ich gehe davon aus, das deins besser ist) aussuchen kann ;)
 
Hier haste nen schick dokumentierten schnipsel, der bei mir unter #dev problemlos funktioniert. Aber ich denk, was auch immer du nutzt wirds auch können. :) Und außerdem steht ja alles da, was gemacht wird :) Importiert wurden System.IO und System.XML

Code:
' Erstmal die Datei auslesen
' In diesem Fall steht in meiner XML-Datei folgendes:
' <?xml version="1.0" encoding="ISO-8859-1"?>
' <eintraege>
' 	<element name="test1" />
' 	<element name="test2" />
' </eintraege>
Dim fs As New FileStream("test.xml",FileMode.Open,FileAccess.Read,FileShare.None)

' XML-Dokument erstellen
Dim xdoc As New XmlDocument()
' Und XML-Struktur einlesen
xdoc.Load(fs)

' Stream erstmal wieder schließen :)
fs.Close()

' Ausgeben des "name"-Attributes des ersten Unterschlüssels.
' ChildNodes(0).ChildNodes(0) würde fehler ergeben, da
' der erste ChildNode der <?xml...-knoten ist.
MessageBox.Show(xdoc.ChildNodes(1).ChildNodes(0).Attributes.GetNamedItem("name").Value)

' Den Knoten verändern
Dim derKnoten As System.Xml.XmlNode = xdoc.ChildNodes(1).ChildNodes(0).Attributes.GetNamedItem("name")
' Zum beispiel dessen Inhalt
derKnoten.Value = "Mal verändert"

' Und den veränderten Knoten dem entsprechenden XML-Knoten wieder zufügen.
xdoc.ChildNodes(1).ChildNodes(0).Attributes.SetNamedItem(derKnoten)

' Stream wieder öffnen
fs = New FileStream("test.xml",FileMode.Create,FileAccess.Write,FileShare.None)
' Inhalt dahinein abspeichern
xd.Save(fs)
' Alles brav wieder zumachen
fs.Close()
' Und nun steht folgendes in der XML-Datei
' <?xml version="1.0" encoding="ISO-8859-1"?>
' <eintraege>
' 	<element name="Mal verändert" />
' 	<element name="test2" />
' </eintraege>

Falls du noch fragen haben solltest, kannst mir ja ne PN schreiben :) Ich hoffe, ich konnte dir helfen :)