如何在C#中更改xml文件的值?

问题描述:

每当我运行程序时,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> 

我不知道为什么发生这种情况,但我认为这必须处理加载的东西到流中,并将其分配给更多的相同的流。

也许你应该做的简单的方法(即作品):

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

谢谢。我一直在寻找解决这个问题的一段时间。 –

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