private void parseXmlFiles() { measuringsDict.Clear(); for (int i = 0; i < fiList.Count; i++) { if (fiList[i].Extension != ".xml") { continue; } XmlDocument xDoc = new XmlDocument(); xDoc.Load(fiList[i].FullName); XmlNodeList measuringPoints = xDoc.GetElementsByTagName("measuringpoint"); for (int j = 0; j < measuringPoints.Count; j++) { XmlNode curMeasuringPoint = measuringPoints[j]; XmlNode mPointCodeAttr = curMeasuringPoint.Attributes.GetNamedItem("code"); string mPointCodeStr = ""; if (mPointCodeAttr != null) { mPointCodeStr = mPointCodeAttr.Value; } MeasuringsByMeter tmpMbm = new MeasuringsByMeter(); sumForMeasuringPoint(xDoc, curMeasuringPoint, out tmpMbm); if (measuringsDict.ContainsKey(mPointCodeStr)) { MeasuringsByMeter mbm = measuringsDict[mPointCodeStr]; mbm.count1 += tmpMbm.count1; mbm.count3 += tmpMbm.count3; mbm.sum1 += tmpMbm.sum1; mbm.sum3 += tmpMbm.sum3; mbm.countXml++; measuringsDict[mPointCodeStr] = mbm; } else { MeasuringsByMeter mbm = new MeasuringsByMeter(); mbm.meterName = curMeasuringPoint.Attributes.GetNamedItem("name").Value; mbm.count1 = tmpMbm.count1; mbm.count3 = tmpMbm.count3; mbm.sum1 = tmpMbm.sum1; mbm.sum3 = tmpMbm.sum3; mbm.countXml++; measuringsDict.Add(mPointCodeStr, mbm); } } } addRowsToTable(measuringsDict); }
private void sumForMeasuringPoint(XmlDocument xDoc, XmlNode measuringPointNode, out MeasuringsByMeter measForOneMesPoint) { measForOneMesPoint = new MeasuringsByMeter(); //TOOD: а вдруг элемент XmlNodeList channelsList = measuringPointNode.ChildNodes; for (int i = 0; i < channelsList.Count; i++) { XmlNode tmpNode = channelsList[i]; XmlNode codeAttribObj = tmpNode.Attributes.GetNamedItem("code"); if (codeAttribObj == null || (codeAttribObj.Value != "01" && codeAttribObj.Value != "03")) { continue; } XmlNodeList periodsList = tmpNode.ChildNodes; string tmpValStr = ""; int tmpCount = 0; double tmpSum = 0; foreach (XmlNode period in periodsList) { XmlNode n = period.FirstChild; if (n != null) { double tmpD = 0; tmpValStr = n.InnerText; try { tmpD = double.Parse(tmpValStr, System.Globalization.CultureInfo.InvariantCulture); tmpSum += tmpD; tmpCount++; } catch (Exception ex) { MessageBox.Show("sumForMeasuringPoint Ошибка преобразования: " + ex + "; " + tmpValStr); } } } if (codeAttribObj.Value == "01") { measForOneMesPoint.count1 = tmpCount; measForOneMesPoint.sum1 = tmpSum; } else if (codeAttribObj.Value == "03") { measForOneMesPoint.count3 = tmpCount; measForOneMesPoint.sum3 = tmpSum; } } }
private void addRowsToTable(Dictionary <string, MeasuringsByMeter> dict) { string[] keys = dict.Keys.ToArray <string>(); foreach (string k in keys) { MeasuringsByMeter m = dict[k]; DataRow dr = dt.Rows.Add(); dr["colCode"] = k; dr["colSumm1"] = m.sum1; dr["colCount1"] = m.count1; dr["colSumm3"] = m.sum3; dr["colCount3"] = m.count3; dr["colCountXml"] = m.countXml; } }