2017-04-21 12 views
1

Wenn ich das Programm laufe, fügt die XML-Datei einfach andere Teile über den ursprünglichen Code hinzu, anstatt sie zu ersetzen. Hier ist meine DateienWie ändert man Werte einer XML-Datei in C#?

XML:

<?xml version="1.0" encoding="utf-8" ?> 
<stuff>stuff</stuff> 

C#:

static void Main(string[] args) 
    { 
     XmlDocument doc = new XmlDocument(); 
     FileStream f = new FileStream(@"C:\ file path", FileMode.Open); 
     doc.Load(f); 
     doc.SelectSingleNode("stuff").InnerText = "hi"; 
     doc.Save(f); 
    } 

resultierenden XML-:

<?xml version="1.0" encoding="utf-8" ?> 
<stuff>stuff</stuff><?xml version="1.0" encoding="utf-8"?> 
<stuff>hi</stuff> 

Antwort

1

Ich bin nicht sicher, warum dies geschieht, aber ich denke, es ist hat damit zu tun, Sachen in den Stream zu laden und mehr demselben Stream zuzuordnen.

Vielleicht sollten Sie die einfache Art und Weise tun (das funktioniert):

static void Main(string[] args) 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.Load(@"C:\Temp\Test.xml"); 
     doc.SelectSingleNode("stuff").InnerText = "hi"; 
     doc.Save(@"C:\Temp\Test.xml"); 
    } 
+0

Vielen Dank. Ich suche seit einiger Zeit nach einer Lösung für dieses Problem. –

0

Die Überlastung für Save, die den Dateinamen nimmt, wird erreichen, was Sie sich wünschen. Es überschreibt die vorhandene Datei.

 XmlDocument doc = new XmlDocument(); 
     FileStream f = new FileStream(@"C:\file.xml", FileMode.Open); 
     doc.Load(f); 
     f.Close(); 
     doc.SelectSingleNode("stuff").InnerText = "hi"; 
     doc.Save(@"C:\file.xml"); 
+0

Hoppla. Die gleiche Antwort wurde bereits von DesertFox hinzugefügt – Sanjid

Verwandte Themen