public static IntePara ReadXmlFile(string filePath, int fanNo) { //声明XMLDocument对象 var doc = new XmlDocument(); try { //数据存储结构体 var inte = new IntePara { FanNo = fanNo }; //范围数据存储结构体列表 var rangeParaList = new List <RangePara>(); //加载XML文件 doc.Load(filePath); //获取XML根结点 var root = doc.SelectSingleNode("ECView"); //获取根结点属性--智能控速模式号 var rootXe = (XmlElement)root; inte.ControlType = Convert.ToInt32(rootXe?.GetAttribute("Type")); //获取下层结点 var fanList = root?.ChildNodes; if (fanList != null) { foreach (XmlNode fan in fanList) { //获取下层结点属性--风扇最小转速 var fanXe = (XmlElement)fan; inte.MinFanDuty = Convert.ToInt32(fanXe.GetAttribute("MinFanduty")); //获取范围数据 var rangeList = fan.ChildNodes; foreach (XmlNode rangeXn in rangeList) { var rangePara = new RangePara(); var rangeXe = (XmlElement)rangeXn; //获取范围号 rangePara.RangeNo = Convert.ToInt32(rangeXe.GetAttribute("Num")); //获取范围下限 rangePara.InferiorLimit = Convert.ToInt32(rangeXe.GetAttribute("InferiorLimit")); switch (inte.ControlType) { case 1: //控速模式1下直接定义风扇转速 rangePara.FanDuty = Convert.ToInt32(rangeXe.GetAttribute("Fanduty")); break; case 2: //控速模式2下为温度+自定义增幅百分比 rangePara.AddPercentage = Convert.ToInt32(rangeXe.GetAttribute("AddPercentage")); break; } rangeParaList.Add(rangePara); } } } inte.RangeParaList = rangeParaList; return(inte); } catch (Exception e) { Console.WriteLine(@"解析XML出错,原因:" + e.Message); return(null); } }
/// <summary> /// 读取XML文件 /// </summary> /// <param name="filePath"></param> private static IntePara _readXmlFile(string filePath, int fanNo) { //声明XMLDocument对象 XmlDocument doc = new XmlDocument(); try { //数据存储结构体 IntePara inte = new IntePara(); inte.FanNo = fanNo; //范围数据存储结构体列表 List <RangePara> rangeParaList = new List <RangePara>(); //加载XML文件 doc.Load(filePath); //获取XML根结点 XmlNode root = doc.SelectSingleNode("ECView"); //获取根结点属性--智能控速模式号 XmlElement rootXe = (XmlElement)root; inte.ControlType = Convert.ToInt32(rootXe.GetAttribute("Type")); //获取下层结点 XmlNodeList fanList = root.ChildNodes; foreach (XmlNode fan in fanList) { //获取下层结点属性--风扇最小转速 XmlElement fanXe = (XmlElement)fan; inte.MinFanDuty = Convert.ToInt32(fanXe.GetAttribute("MinFanduty")); //获取范围数据 XmlNodeList rangeList = fan.ChildNodes; foreach (XmlNode rangeXn in rangeList) { RangePara rangePara = new RangePara(); XmlElement rangeXe = (XmlElement)rangeXn; //获取范围号 rangePara.RangeNo = Convert.ToInt32(rangeXe.GetAttribute("Num")); //获取范围下限 rangePara.InferiorLimit = Convert.ToInt32(rangeXe.GetAttribute("InferiorLimit")); if (inte.ControlType == 1) { //控速模式1下直接定义风扇转速 rangePara.FanDuty = Convert.ToInt32(rangeXe.GetAttribute("Fanduty")); } else if (inte.ControlType == 2) { //控速模式2下为温度+自定义增幅百分比 rangePara.AddPercentage = Convert.ToInt32(rangeXe.GetAttribute("AddPercentage")); } rangeParaList.Add(rangePara); } } inte.RangeParaList = rangeParaList; return(inte); } catch (Exception e) { Console.WriteLine("解析XML出错,原因:" + e.Message); return(null); } finally { if (doc != null) { //释放资源 doc = null; } } }