0

我对 C# 比较陌生,刚开始使用 XmlElement 和 SingleNode 方法。出于某种原因,“customSettings”一直返回 null,尽管 XML 文档已正确加载。我已经通过将其加载为字符串来检查它。到目前为止,我已经尝试了所有我能想象到的东西,包括评论中的尝试。非常感谢任何帮助或建议。这是我的 XML 文档:

编辑:使用 CodingYoshi 的解决方案,但有更好的方法吗?

编辑:更改了 NSGaga 的 XML 和代码以解决 user.config 中 NameValueCollection 的只读异常

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="users_fächer" type="System.Configuration.NameValueSectionHandler" />
  </configSections>
  <users_faecher>
    <add key="user1" value="value1" />
    <add key="user2" value="value2" />
  </users_faecher>
</configuration>

代码:

string dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Users.config");
string new_fächer = input[1];
ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = dir;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

ConfigurationSection myParamsSection = config.GetSection("users_faecher");

string myParamsSectionRawXml = myParamsSection.SectionInformation.GetRawXml();
XmlDocument sectionXmlDoc = new XmlDocument();
sectionXmlDoc.Load(new StringReader(myParamsSectionRawXml));
NameValueSectionHandler handler = new NameValueSectionHandler();

NameValueCollection users_fächer = handler.Create(null, null, sectionXmlDoc.DocumentElement) as NameValueCollection;

users_fächer.Set(user, new_fächer);
config.Save(ConfigurationSaveMode.Modified, true);
4

1 回答 1

0

This will get you the first add element:

doc.ChildNodes[0].NextSibling.ChildNodes[1].ChildNodes[0].ChildNodes[0];

This will get you the first add element's value attribute.

doc.ChildNodes[0].NextSibling.ChildNodes[1]
    .ChildNodes[0].ChildNodes[0].Attributes["value"].Value;
于 2017-03-15T00:25:01.377 回答