读取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(); } } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |