C#读取xml配置文件
一、配置xml
<?xml version="1.0" encoding="utf-8" ?> <configuration> <Section Name="system"> <Key Name="srcPath" value="E:\EDIFileTest\EDIPackageA" /> <Key Name="tarPath" value="E:\EDIFileTest\EDIPackageB" /> <Key Name="savePath" value="E:\EDIFileTest\Test.csv" /> </Section> </configuration>
Section的Name值可以自定义,可以有多个Section节点;
Section节点下的Key节点用来记录Name、Value值,程序根据Name取Value值
二、xml帮助类
/// <summary> /// 获取XML配置文件的值 /// </summary> /// <param name="section"></param> /// <param name="key"></param> /// <returns></returns> public static string getValue(string section, string key) { string retValue = string.Empty; XmlDocument xd = new XmlDocument(); xd.Load(configlFile); XmlElement xe = xd.DocumentElement; if (xe.Name == "configuration") { //根据固定的文档结构查找指定配置项 foreach (System.Xml.XmlLinkedNode xcea in xe.ChildNodes) { if (xcea.NodeType != System.Xml.XmlNodeType.Element) //如果不是元素,继续 { continue; } System.Xml.XmlElement xce = (System.Xml.XmlElement)xcea; if ((xce.NodeType == System.Xml.XmlNodeType.Element) && (xce.HasAttributes) && (xce.Name=="Section" )) { if (xce.Attributes[0].Name == "Name" && xce.Attributes[0].Value == section) // 通过属性判断当前元素是否是需要查找的配置项 { foreach (System.Xml.XmlLinkedNode xccea in xce.ChildNodes) { if (xccea.NodeType != System.Xml.XmlNodeType.Element) //如果不是元素,继续 { continue; } System.Xml.XmlElement xcce = (System.Xml.XmlElement)xccea; if (xcce.NodeType == System.Xml.XmlNodeType.Element && xcce.HasAttributes && xcce.Name == "Key") { if (xcce.Attributes[0].Name == "Name" && xcce.Attributes[0].Value == key) { if (string.IsNullOrEmpty(retValue)) { retValue = xcce.Attributes[1].Value; } else { retValue = retValue + "," + xcce.Attributes[1].Value; } } } } } } } } return removeRightComma(retValue); }
三、程序调用
string srcPath = XMLConfig.getValue("system", "srcPath");