2017-04-21 38 views
1

每當我運行程序時,xml文件只是在原始代碼上添加其他部分而不是替換它。 這裏是我的文件如何在C#中更改xml文件的值?

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); 
    } 

生成的XML:

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

回答

1

我不知道爲什麼發生這種情況,但我認爲這必須處理加載的東西到流中,並將其分配給更多的相同的流。

也許你應該做的簡單的方法(即作品):

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

謝謝。我一直在尋找解決這個問題的一段時間。 –

0

Save超載,是以文件名會實現你在找什麼。它會覆蓋現有的文件。

 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

糟糕。 DesertFox已經添加了相同的答案 – Sanjid