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

How to change values of an xml file in 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");
    }

采用文件名的 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");