今天公司老大让做一个web.config的配置工具,虽然好久没写winform的程序了,不过想想无非也就是操作XML文件嘛,信誓旦旦的说两个小时就可以了。结果时间操作才发现不对劲,读取普通的XML文件没问题,操作web.config就不行,总是找不到节点。悲剧啊,折腾了一上午。
偶然发现web.config最开始比普通xml文件多了一行 xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0",心里一动,把这一行删掉,这下可以了,看来问题就出在这个身上啊。百度了一下,发现这个东东原来是xml的命名空间(汗,头一次知道这个东东),找到问题就好办了:
/// <summary>
/// 获取连接字符串信息
/// </summary>
public string GetConnectionString()
{
return QueryNode("/configuration/connectionStrings", "name", "ConnectionString", "connectionString");
}
private string QueryNode(string xpath, string nameField, string nameValue, string valueField)
{
XmlDocument doc = new XmlDocument();
doc.Load(xmlFilePath);
xpath = xpath.Replace("/", "//ww:");
XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("ww", doc.DocumentElement.NamespaceURI);
XmlNode pareNode = doc.SelectSingleNode(xpath, ns);
}