XML nur ein Element bearbeiten

forsterm

Erfahrenes Mitglied
Hallo,
ich habe folgende XML Datei.
Code:
<?xml version="1.0" encoding="utf-16"?>
<Programm>
  <Einstellungen>
    <Opacity>1</Opacity>
    <Tray>0</Tray>
    <Titel>Fenster1</Titel>
  </Einstellungen>
</Programm>
Ist es irgendwie möglich, dass nur die einzelnen Einstellung überschrieben werden?
Ich habe zwar schon etwas gefunden, wie man mit VB.NET XML Dateien erstellt,
jedoch wird dabei immer die ganze Datei überschrieben.

Hoffe hier kann mir jemand weiterhelfen.

mfg
forsterm
 
C#:
string filename = @"C:\options.xml";
XmlDocument doc = new XmlDocument();
doc.Load(filename);

XmlNode xn = doc.SelectSingleNode("Programm/Einstellungen/Titel");
if (xn != null)
  xn.InnerText = "Fenster 2";

doc.Save(filename)


Dazu musst du den Namespace System.Xml einbinden. Dann sollte das so funktionieren, sofern ich jetzt keinen Tippfehler drinnen hab. Beispiel wurde von mir nicht getestet.
 
Hallo,
leider habe ich eine Fehlermeldung bekommen (siehe Bild).
Weiß jemand wo der Fehler liegen könnte?

mfg
forsterm
 

Anhänge

  • csharp_xml_fehler.jpg
    csharp_xml_fehler.jpg
    60,5 KB · Aufrufe: 136
Norbert Eder hat gesagt.:
Das Encoding des XMLs schon auf utf-8 gestellt?
Hallo,
habe das mal so versucht:
C#:
string filename = @"C:\options.xml";
XmlDocument doc = new XmlDocument();
Encoding.UTF8;
doc.Load(filename);
XmlNode xn = doc.SelectSingleNode("Programm/Einstellungen/Titel");
if (xn != null)
xn.InnerText = "Fenster 2";
doc.Save(filename);
Leider habe ich jedoch folgenden Fehler erhelten, mitdem ich aber nichts anfangen kann. :(
Code:
Nur assignment-, call-, increment-, decrement- und "new object"-Ausdrücke können als Anweisung verwendet werden.
mfg
forsterm
 
forsterm hat gesagt.:
Leider habe ich jedoch folgenden Fehler erhelten, mitdem ich aber nichts anfangen kann. :(
Nur assignment-, call-, increment-, decrement- und "new object"-Ausdrücke können als Anweisung verwendet werden.
o.0 Zeile 3,
von Exceptions hast wohl noch nichts gehört?

[thread=228836]Problem mit Umlauten - Thread von Dir[/thread] (!)
[thread=231567]Hilfe bei SaveFileDialog - Thread[/thread]
 
Du sollst das Encoding.UTF8 nicht in den Sourcecode schreiben, sondern lediglich die erste Zeile in deinem XML anpassen.
 
cosmochaosmaker hat gesagt.:
o.0 Zeile 3, von Exceptions hast wohl noch nichts gehört
Norbert Eder hat gesagt.:
Du sollst das Encoding.UTF8 nicht in den Sourcecode schreiben,
sondern lediglich die erste Zeile in deinem XML anpassen.
Hallo,
sorry, dass ich mich so blöd anstellen :-(, danke jetzt hat es funktioniert.
Nur noch eine (kleine) Frage. :rolleyes:
Wenn ich sagen wir folgende XML Datei erstellt habe:
Code:
<?xml version="1.0" encoding="utf-8"?>
<Programm>
  <Einstellungen>
    <Opacity>1</Opacity>
    <Tray>0</Tray>
    <Titel>Fenster1</Titel>
  </Einstellungen>
  <ListBox></ListBox>
</Programm>
wie kann ich dann zwischen die Elemente <ListBox></ListBox>
den Inhalt meiner ListBox schreiben? Es sollte ungefähr so aussehen:
Code:
<?xml version="1.0" encoding="utf-8"?>
<Programm>
  <Einstellungen>
    <Opacity>1</Opacity>
    <Tray>0</Tray>
    <Titel>Fenster1</Titel>
  </Einstellungen>
  <ListBox>
    <ListBoxEintrag>Eintrag1</ListBoxEintrag>
    <ListBoxEintrag>Eintrag2</ListBoxEintrag>
    <ListBoxEintrag>Eintrag3</ListBoxEintrag>
    <ListBoxEintrag>Eintrag4</ListBoxEintrag>
  </ListBox>
</Programm>

mfg
forsterm
 
Also Du machst echt den Anschein als hättest Dich seit damals NICHT mit Exceptions auseinander gesetzt. --> :google:

forsterm hat gesagt.:
wie kann ich dann zwischen die Elemente <ListBox></ListBox>
den Inhalt meiner ListBox schreiben?
Ungefähr so: [post=969849]Beispiel - Post[/post]
 
Hallo,
ok ich habe es nun geschafft, dass der Inhalt einer ListBox in eine XML Datei gespeichert wird.
Das sieht wie folgend aus:
Code:
On Error GoTo err
Dim doc As XmlDocument = New XmlDocument()
Dim node As XmlNode
doc.Load(filename)
node = doc.SelectSingleNode("Programm/ListBox")
node.RemoveAll()
For i = 0 To ListBox1.Items.Count - 1
node.AppendChild(doc.CreateNode(XmlNodeType.Element, "ListBoxEintrag", ""))
node.ChildNodes(i).InnerText = ListBox1.Items.Item(i)
Next
doc.Save(filename)
Exit Sub
err:
MessageBox.Show(Err.Description, "Fehler beim Speichern der XML Datei")

Nun habe ich nur noch eine Frage. Wie kann ich nun jedem Element noch ein Attribut hinzufügen?

mfg
forsterm
 
Zurück