我有一个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>
答案 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 。