加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

读取xml

发布时间:2020-12-16 23:47:03 所属栏目:百科 来源:网络整理
导读:项目需要一个对当日数据的统计并记录到本地,然后就有了下面的东东 xml格式: ?xml version= " 1.0 " encoding= " utf-8 " ?statsConfig date 0001 / 1 / 1 0 : 00 : 00 /date readBar total 17 /total success 12 /success fail 5 /fail /readBar writeTag to

项目需要一个对当日数据的统计并记录到本地,然后就有了下面的东东

xml格式:

<?xml version="1.0" encoding="utf-8"?>
<statsConfig>
  <date>0001/1/1 0:00:00</date>
  <readBar>
    <total>17</total>
    <success>12</success>
    <fail>5</fail>
  </readBar>
  <writeTag>
    <total>17</total>
    <success>0</success>
    <fail>17</fail>
  </writeTag>
  <checkTag>
    <total>6</total>
    <success>6</success>
    <fail>0</fail>
  </checkTag>
  <dianMoTime>20</dianMoTime>
</statsConfig>

?

 public enum StatsType
    {
        ReadBar = 0,WriteTag = 1,CheckTag = 2,}

    public class StatsConfig
    {
        public DateTime statsDate = DateTime.MinValue;
        public int readBarTotalCount { get; set; }
        public int readBarSuccessCount { get; set; }
        public int readBarFailCount { get; set; }
        public int writeTagTotalCount { get; set; }
        public int writeTagSuccessCount { get; set; }
        public int writeTagFailCount { get; set; }
        public int checkTagTotalCount { get; set; }
        public int checkTagSuccessCount { get; set; }
        public int checkTagFailCount { get; set; }
        public int dianMoTime { get; set; }
        private static StatsConfig _statsConfig = new StatsConfig();

        string file = "";

        public static StatsConfig GetConfig()
        {
            return _statsConfig;
        }

        public StatsConfig()
        {

        }

        public void Init()
        {
            file = "./StatsConfig.xml";
            Load();

            if (statsDate.Date.AddDays(1) < DateTime.Today)
            {
                Clear();
            }
        }

        public void Save()
        {
            Update();
        }

        public void Clear()
        {
            statsDate = DateTime.MinValue;
            readBarTotalCount = 0;
            readBarSuccessCount = 0;
            readBarFailCount = 0;
            writeTagTotalCount = 0;
            writeTagSuccessCount = 0;
            writeTagFailCount = 0;
            checkTagTotalCount = 0;
            checkTagSuccessCount = 0;
            checkTagFailCount = 0;
        }

        private void Load()
        {
            try
            {
                XmlDocument Doc = new XmlDocument();
                Doc.Load(file);
                XmlElement rootElem = Doc.DocumentElement;
                Load(rootElem);
            }
            catch (Exception ex)
            {
                GlobalPara.FLog.WriteLog(LogType.Error,"[StatsConfig]:加载配置文件出错!" + ex.Message);
            }

        }

        private void Load(XmlElement rootElem)
        {
            XmlNodeList xmlNodes = rootElem.ChildNodes;
            if (rootElem.LocalName == "statsConfig")
            {
                foreach (XmlNode node in xmlNodes)
                {
                    if (node.LocalName == "date")
                    {
                        statsDate = Convert.ToDateTime(node.InnerText);
                    }

                    if (node.LocalName == "readBar")
                    {
                        Load(StatsType.ReadBar,node.ChildNodes);
                    }

                    if (node.LocalName == "writeTag")
                    {
                        Load(StatsType.WriteTag,node.ChildNodes);
                    }

                    if (node.LocalName == "checkTag")
                    {
                        Load(StatsType.CheckTag,node.ChildNodes);
                    }

                    if (node.LocalName == "dianMoTime")
                    {
                        dianMoTime = Convert.ToInt32(node.InnerText);
                    }
                }
            }
        }

        private void Load(StatsType type,XmlNodeList xmlNodes)
        {
            foreach (XmlNode node in xmlNodes)
            {
                if (type == StatsType.WriteTag)
                {
                    if (node.LocalName == "total")
                    {
                        writeTagTotalCount = Convert.ToInt32(node.InnerText);
                    }

                    if (node.LocalName == "success")
                    {
                        writeTagSuccessCount = Convert.ToInt32(node.InnerText);
                    }

                    if (node.LocalName == "fail")
                    {
                        writeTagFailCount = Convert.ToInt32(node.InnerText);
                    }
                }

                if (type == StatsType.ReadBar)
                {
                    if (node.LocalName == "total")
                    {
                        readBarTotalCount = Convert.ToInt32(node.InnerText);
                    }

                    if (node.LocalName == "success")
                    {
                        readBarSuccessCount = Convert.ToInt32(node.InnerText);
                    }

                    if (node.LocalName == "fail")
                    {
                        readBarFailCount = Convert.ToInt32(node.InnerText);
                    }
                }

                if (node.LocalName == "total")
                {
                    checkTagTotalCount = Convert.ToInt32(node.InnerText);
                }

                if (node.LocalName == "success")
                {
                    checkTagSuccessCount = Convert.ToInt32(node.InnerText);
                }

                if (node.LocalName == "fail")
                {
                    checkTagFailCount = Convert.ToInt32(node.InnerText);
                }
            }
        }

        private void Update()
        {
            if (!File.Exists(file))
            {
                GlobalPara.FLog.WriteLog(LogType.Error,"[StatsConfig]:读取配置的文件不存在!" + file);
            }

            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(file);

                XmlElement rootElem = doc.DocumentElement;
                if (rootElem.LocalName == "statsConfig")
                {
                    foreach (XmlNode nodes in rootElem.ChildNodes)
                    {
                        if (nodes.LocalName == "date")
                        {
                            nodes.InnerText = statsDate.ToString();
                        }

                        if (nodes.LocalName == "readBar")
                        {
                            UpdateChildNodes(StatsType.ReadBar,nodes.ChildNodes);
                        }

                        if (nodes.LocalName == "writeTag")
                        {
                            UpdateChildNodes(StatsType.WriteTag,nodes.ChildNodes);
                        }

                        if (nodes.LocalName == "checkTag")
                        {
                            UpdateChildNodes(StatsType.CheckTag,nodes.ChildNodes);
                        }
                    }
                    doc.Save(file);
                }
            }
            catch (Exception ex)
            {
                GlobalPara.FLog.WriteLog(LogType.Error,"[StatsConfig]:保存配置文件出错!" + ex.Message);
            }
        }

        private void UpdateChildNodes(StatsType type,XmlNodeList xmlNodes)
        {
            foreach (XmlNode node in xmlNodes)
            {
                if (type == StatsType.CheckTag)
                {
                    if (node.LocalName == "total")
                    {
                        node.InnerText = checkTagTotalCount.ToString();
                    }

                    if (node.LocalName == "success")
                    {
                        node.InnerText = checkTagSuccessCount.ToString();
                    }

                    if (node.LocalName == "fail")
                    {
                        node.InnerText = checkTagFailCount.ToString();
                    }
                }

                if (type == StatsType.ReadBar)
                {
                    if (node.LocalName == "total")
                    {
                        node.InnerText = readBarTotalCount.ToString();
                    }

                    if (node.LocalName == "success")
                    {
                        node.InnerText = readBarSuccessCount.ToString();
                    }

                    if (node.LocalName == "fail")
                    {
                        node.InnerText = readBarFailCount.ToString();
                    }
                }

                if (type == StatsType.WriteTag)
                {
                    if (node.LocalName == "total")
                    {
                        node.InnerText = writeTagTotalCount.ToString();
                    }

                    if (node.LocalName == "success")
                    {
                        node.InnerText = writeTagSuccessCount.ToString();
                    }

                    if (node.LocalName == "fail")
                    {
                        node.InnerText = writeTagFailCount.ToString();
                    }
                }
            }
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读