Beispiel #1
0
        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);
        }
Beispiel #2
0
        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;
                }
            }
        }
Beispiel #3
0
 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;
     }
 }