• 自己写的XML操作代码 荣


    using System;
    using System.Data;
    using System.IO;

    namespace CodeGen
    {
     /// <summary>
     /// HdcCache 的摘要说明。
     /// </summary>
     public class HdcCache
     {
      /// <summary>
      /// 存储数据的对象。
      /// </summary>
      /// <author>xumr</author>
      /// <log date="2005-05-15">创建</log>
      private object obj = null;

      /// <summary>
      /// 文件路径。
      /// </summary>
      /// <author>xumr</author>
      /// <log date="2005-05-15">创建</log>
      private string filePath = null;

      /// <summary>
      /// 文件的最后修改日期。
      /// </summary>
      /// <author>xumr</author>
      /// <log date="2005-05-15">创建</log>
      private DateTime fileUpdateTime;

      /// <summary>
      /// 刷新频率。
      /// </summary>
      /// <author>xumr</author>
      /// <log date="2005-05-15">创建</log>
      private int second = 0;

      /// <summary>
      /// 数据的读取日期。
      /// </summary>
      /// <author>xumr</author>
      /// <log date="2005-05-15">创建</log>
      private DateTime setTime;

      /// <summary>
      /// 默认构造函数。
      /// </summary>
      /// <author>xumr</author>
      /// <log date="2005-05-15">创建</log>
      public HdcCache()
      {
       //do nothing
      }

      /// <summary>
      /// 取得文件数据。
      /// </summary>
      /// <param name="filePath">文件路径</param>
      /// <param name="second">数据更新频率</param>
      public void Init(string filePath, int second)
      {
       this.obj = null;

       this.filePath = filePath;
       if (filePath != null)
       {
        this.fileUpdateTime = File.GetLastWriteTime(filePath);
        this.second = second;
        this.setTime = DateTime.Now;
       }
      }

      public void Init(string filePath)
      {
       this.obj = null;

       this.filePath = filePath;
       if (filePath != null)
       {
        this.fileUpdateTime = File.GetLastWriteTime(filePath);
       }
      }

      public void Init(int second)
      {
       this.obj = null;

       this.second = second;
       if (second <= 0)
       {
        this.setTime = DateTime.Now;
       }
      }

      public object Get()
      {
       if (this.obj == null)
       {
        return null;
       }

       if (this.filePath != null)
       {
        DateTime updateTime = File.GetLastWriteTime(this.filePath);
        if (!updateTime.Equals(this.fileUpdateTime))
        {
         this.obj = null;
         return null;
        }
       }

       if (this.second > 0)
       {
        TimeSpan timeSpan = DateTime.Now - this.setTime;
        if (timeSpan.TotalSeconds > this.second)
        {
         this.obj = null;
         return null;
        }
       }

       return this.obj;
      }
      
      public void Set(object obj)
      {
       this.obj = obj;

       if (this.second > 0)
       {
        this.setTime = DateTime.Now;
       }

       if (this.filePath != null)
       {
        this.fileUpdateTime = File.GetLastWriteTime(filePath);
       }
      }
     }
    }





    using System;
    using System.IO;
    using System.Data;
    using System.Collections;
    using System.Xml;

    namespace CodeGen
    {
     /// <summary>
     /// ReadXML 的摘要说明。
     /// </summary>
     public class ReadXML
     {
      
      public static string XmlFileName = @"..\..\CharXml.xml";

      public static HdcCache cache = new HdcCache();

      public ReadXML()
      {
       //
       // TODO:在此处添加构造函数逻辑
       //

       if (!File.Exists(XmlFileName))
       {
        throw new Exception("配置文件不存在!");
       }

       GetXMLDoc();
      }

      public XmlDocument GetXMLDoc()
      {
       XmlDocument xmlDoc = null;

       xmlDoc = (XmlDocument)cache.Get();

       if (xmlDoc == null)
       {
        lock(typeof(ReadXML))
        {
         xmlDoc = (XmlDocument)cache.Get();
         if (xmlDoc == null)
         {
          xmlDoc = new XmlDocument();
          xmlDoc.Load(XmlFileName);
          cache.Init(XmlFileName);
          cache.Set(xmlDoc);
         }
        }
       }

       return xmlDoc;
      }

      public string GetConstantValue(string itemName, string defName)
      {
       XmlNodeList scrNodes = GetXMLDoc().SelectNodes("//define[@itemname='" + defName + "' AND @defname='" + defName + "']]");
       string retValue = "";
       foreach (XmlNode nd in scrNodes)
       {
        retValue = nd.Attributes.GetNamedItem("value").Value;
       }

       return retValue;
      }

      public string GetConstantName(string itemName, string defValue)
      {
       XmlNodeList scrNodes = GetXMLDoc().SelectNodes("//define[@itemname='" + itemName + "' and @value='" + defValue + "']");
       string retValue = "";
       foreach(XmlNode nd in scrNodes)
       {
        retValue = nd.Attributes.GetNamedItem("defnme").Value;
       }

       return retValue;
      }

      public string GetConstantName(string itemName)
      {
       XmlNodeList scrNodes = GetXMLDoc().SelectNodes("//define[@itemname='" + itemName + "']");
       string retValue = "";
       foreach(XmlNode nd in scrNodes)
       {
        retValue = nd.Attributes.GetNamedItem("value").Value;
       }

       return retValue;
      }

      public DataTable GetConstantTable(string itemName)
      {
       DataTable retValue = new DataTable();
       retValue.Columns.Add("column1", typeof(string));
       retValue.Columns.Add("column2", typeof(string));

       XmlNodeList scrNodes = GetXMLDoc().SelectNodes("//define[@itemname='" + itemName + "']");
       foreach (XmlNode nd in scrNodes)
       {
        DataRow addRow = retValue.NewRow();
        addRow["column1"] = nd.Attributes.GetNamedItem("value").Value;
        addRow["column2"] = nd.Attributes.GetNamedItem("defname").Value;
        retValue.Rows.Add(addRow);
       }

       return retValue;
      }

      public Hashtable GetConstantHashtable(string itemName)
      {
       Hashtable retValue = new Hashtable();
       XmlNodeList scrNodes = GetXMLDoc().SelectNodes("//define[@itemname='" + itemName + "']");
       foreach (XmlNode nd in scrNodes)
       {
        retValue[nd.Attributes.GetNamedItem("defname").Value] = nd.Attributes.GetNamedItem("value").Value;
       }

       return retValue;
      }

      public void SaveValue(string key, string attribute, string Value)
      {
       XmlDocument xmlDoc = new XmlDocument();

       xmlDoc.Load(XmlFileName);

       XmlNodeList scrNodes = xmlDoc.SelectNodes("//define[@itemname='" + key + "']");

       foreach (XmlNode nd in scrNodes)
       {
        nd.Attributes[attribute].Value = Value;
       }

       xmlDoc.Save(XmlFileName);
      }
     }
    }

  • 相关阅读:
    net事件丢失解决方法
    Google排名经验谈
    动力漏洞
    Understand简明参考
    修复iReaper
    Bootstrap源码分析
    UTF8编码字节流错误小析
    OAuth2学习及DotNetOpenAuth部分源码研究
    DynamicModuleUtility对象在.net不同版本下的兼容性问题
    MediaWiKi简明安装与配置笔记
  • 原文地址:https://www.cnblogs.com/admin11/p/198093.html
Copyright © 2020-2023  润新知