使用XmlDocument读取app.config

时间:2014-10-30 12:29:29

标签: c# app-config

我有一个app.exe.config文件,我试图通过XmlDocument读取它。但是,以下代码不起作用(将值作为null):

XmlDocument appSettingsDoc = new XmlDocument();
appSettingsDoc.Load(@"C:\DBUpgraderConfig\DBUpgrader.exe.config");
XmlNode node = appSettingsDoc.SelectSingleNode("//appSettings");
XmlElement value = (XmlElement)node.SelectSingleNode("UserName");

这是XML:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="Server" value="Xeon-s7\MSSQL2008"/>
    <add key="Username" value=""/>
    <add key="Password" value=""/>
  </appSettings>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

3 个答案:

答案 0 :(得分:6)

您应该比较属性key,而不是尝试将其作为节点名称:

XmlElement value = (XmlElement)node.SelectSingleNode("//add[@key='Username']");

这将为您提供add节点。您可以随意使用它,包括获取属性value

string val = value.Attributes["value"].Value;

答案 1 :(得分:2)

使用XPath表达式会更容易:

var appSettingsDoc = XmlDocument.Load(@"C:\DBUpgraderConfig\DBUpgrader.exe.config");

var node = appSettingsDoc.XPathSelectElement("//configuration/appSettings/add[@key = 'Username']");

// for example:
node.Attribute["value"].Value = "John Doe";  

答案 2 :(得分:1)

您正在搜索用户 N ame但您已定义用户 n