【问题标题】:How can I change an attribute value of a XML file in c#?如何在 C# 中更改 XML 文件的属性值?
【发布时间】:2011-05-29 11:38:18
【问题描述】:

我有一个 XML 文件(web.config),我需要编辑每个标签的值属性,取决于键名...

这是 XML 文件的示例:

<appSettings>
  <add key="A1" value="Hi" />
  <add key="B1" value="Hello" />
</appSettings>

我的意思是,如何使用键属性(A1 和 B1)更改值“hi”和“hello”??

非常感谢

【问题讨论】:

  • 您为什么要以编程方式尝试更改您的 .config 文件?也许你应该采取不同的方法。

标签: c# .net xml file xmldocument


【解决方案1】:

试试这个代码,它工作正常:

XmlDocument doc = new XmlDocument();
doc.Load("Your.xml");
XmlNodeList elementList = doc.GetElementsByTagName("add");
for (int i = 0; i < elementList.Count; i++)
{
    if(elementList[i].Attributes["key"].Value == "A1")
       elementList[i].Attributes["value"].Value = "NewValue";
}  

【讨论】:

  • 这段代码效率很低,因为它没有利用 XML 中继承的任何数据信息
【解决方案2】:

如果您只想编辑应用程序配置文件 这个功能可以帮助你

 private static void SaveConfig(string KeyName, string value)
    {
        System.Configuration.ConfigurationManager.AppSettings[KeyName] = value;
        System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Windows.Forms.Application.ExecutablePath);
        System.Configuration.AppSettingsSection ass = config.AppSettings;
        if (ass.Settings[KeyName] != null)
            ass.Settings[KeyName].Value = value;
        else
            ass.Settings.Add(KeyName, value);
        config.Save();
    }

通过调用 SaveConfig("key","newvalue") 可以更改配置值

【讨论】:

  • 而不是使用 System.Windows.Forms.Application.ExecutablePath 你应该使用 web.config url
  • 我认为问题在于...我有 2 个不同的项目。 web.config 文件在一个项目中,我需要从另一个项目中调用它......我在使用配置类之前遇到了问题,我可以从它轻松处理 web.config......因为每个人都驻留在不同的班级,这让我更难。所以,我想用另一种方式来做。我认为 XmlDocument 可以以更简单的方式更好地帮助我...所以,我确实使用了它并使用了 XmlDocument...非常感谢你们的帮助;)
  • 如果项目 A 和 B 都在同一个解决方案中,并且项目 A 是默认项目。但是项目 B 出错了,因为它正在寻找 web.config 中不存在的值,因为只有项目 A 被复制到 bin 文件夹中,最简单的方法是从项目 B 中复制缺失的部分web.config 文件到项目 A 中。虽然这更像是一种 hack,但它确实有效。
猜你喜欢
  • 2014-05-20
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
相关资源
最近更新 更多