C# 如何编辑Xml文件';s元素值

C# 如何编辑Xml文件';s元素值,c#,xml,settings,edit,updating,C#,Xml,Settings,Edit,Updating,我有这个Xml文件,我想编辑任何元素,如homepage或search\u provider <?xml version="1.0" encoding="utf-8"?> <Preferences> <personal> <homepage>http://duckduckgo.com</homepage> <search_provider>DuckDuckGo</se

我有这个Xml文件,我想编辑任何元素,如
homepage
search\u provider

<?xml version="1.0" encoding="utf-8"?>
    <Preferences>
      <personal>
        <homepage>http://duckduckgo.com</homepage>
        <search_provider>DuckDuckGo</search_provider>
        <search_provider_url>http://duckduckgo.com/?q=</search_provider_url>
      </personal>
    </Preferences>
现在,虽然这在一定程度上起作用并更改了指定的值,但它也删除了整个
personal
元素

<?xml version="1.0" encoding="utf-8"?>
<Preferences>
  <homepage>http://google.com</homepage>
</Preferences>

http://google.com
希望有人能帮我!在过去的两天里,我一直在寻找解决方案,这是我最接近于让代码以我需要的方式工作的一次

您可以这样使用:

public static void saveSetting(String settingName, String newvalue)
{
    var xmlDocument = XDocument.Load("path");

    var element = xmlDocument.Descendants(settingName).FirstOrDefault();

    if (element != null) element.Value = newvalue;

    xmlDocument.Save("path");
}

有关更多详细信息,请参阅本文档:

保留当前代码,只需修改几行即可:

public static void saveSetting(String settingName, String newvalue)
{
   XmlDocument xml = new XmlDocument();

   xml.Load(userSettingsFile);

   foreach (XmlElement element in xml.SelectNodes("Preferences"))
   {
     if(element.Name.Equals(settingName))
     {
        element.InnerText = newvalue;
        break;
     }
   }

   xml.Save(userSettingsFile);
}

谢谢这很好用。我真的很感谢你的帮助!但它不会让我投票给你的答案。@JothousandYour welcome。如果它解决了你的问题,你可以接受它作为答案。这对我不起作用,它做了与我已有的代码相同的事情。谢谢你的帮助,@Selman22的回答对我有用!
public static void saveSetting(String settingName, String newvalue)
{
   XmlDocument xml = new XmlDocument();

   xml.Load(userSettingsFile);

   foreach (XmlElement element in xml.SelectNodes("Preferences"))
   {
     if(element.Name.Equals(settingName))
     {
        element.InnerText = newvalue;
        break;
     }
   }

   xml.Save(userSettingsFile);
}