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

时间:2017-04-21 00:04:11

标签: c# xml xmldocument

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

2 个答案:

答案 0 :(得分: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");
    }

答案 1 :(得分: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");