【问题标题】:How to change values of an xml file in C#?如何在 C# 中更改 xml 文件的值?
【发布时间】:2017-04-21 00:04:10
【问题描述】:

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

【问题讨论】:

    标签: c# xml xmldocument


    【解决方案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");
        }
    

    【讨论】:

    • 谢谢。我一直在寻找解决这个问题的方法。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      相关资源
      最近更新 更多