xml操作类

 /// <summary>
    /// xml操作类
     /// </summary>
    public class XmlHelper
    {
        #region 公共变量
        protected XmlDocument xmlDoc;
        string xmlfilepath = string.Empty;
        #endregion

        #region 构造函数
        /// <summary>
        /// 构造函数,导入Xml文件
        /// </summary>
        /// <param name="xmlFile">文件路径或xml文件文本</param>
        public XmlHelper(string xmlFile)
        {
            try
            {
                xmlDoc = new XmlDocument();
                if ((xmlFile.Length > 50 ? xmlFile.Substring(0, 50) : xmlFile).Contains("version"))
                {
                    xmlDoc.LoadXml(xmlFile);
                }
                else
                {
                    xmlfilepath = xmlFile;
                    xmlDoc.Load(xmlFile);   //载入Xml文档
                }
            }
            catch (System.Exception ex)
            {
                //throw ex;
            }
        }
        /// <summary>
        /// 析构函数
        /// </summary>
        ~XmlHelper()
        {

            xmlDoc = null;  //释放XmlDocument对象
        }

        #endregion

        #region 保存xml文件
        /// <summary>
        /// 保存文件
        /// </summary>
        /// <param name="filePath">文件虚拟路径</param>
        public void Save()
        {
            try
            {

                xmlDoc.Save(xmlfilepath);
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region 查询

        /// <summary>
        /// 查询指定节点的指定属性值
        /// </summary>
        /// <param name="strNode">节点名</param>
        /// <param name="strAttribute">属性名</param>
        /// <returns>属性值</returns>
        public string GetXmlNodeValue(string strNode, string strAttribute)
        {
            string strReturn = "";

            try
            {
                //根据指定路径获取节点
                XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
                //获取节点的属性,并循环取出需要的属性值
                XmlAttributeCollection xmlAttr = xmlNode.Attributes;

                for (int i = 0; i < xmlAttr.Count; i++)
                {
                    if (xmlAttr.Item(i).Name == strAttribute)
                        strReturn = xmlAttr.Item(i).Value;
                }
            }
            catch (XmlException xmle)
            {
                throw xmle;
            }
            return strReturn;
        }

        /// <summary>
        /// 查询指定节点的指定属性值
        /// </summary>
        /// <param name="strNode">节点名</param>
        public XmlNode GetXmlNode(string strNode)
        {
            try
            {
                return xmlDoc.SelectSingleNode(strNode); ;
            }
            catch (XmlException)
            {
                return null;
            }
        }
        /// <summary>
        /// 属性查询,返回属性值
        /// </summary>
        /// <param name="XmlPathNode">属性所在的节点</param>
        /// <param name="Attrib">属性</param>
        /// <returns></returns>
        public string SelectAttrib(string XmlPathNode, string Attrib)
        {

            string _strNode = "";
            try
            {
                _strNode = xmlDoc.SelectSingleNode(XmlPathNode).Attributes[Attrib].Value;
            }
            catch
            { }
            return _strNode;
        }

        /// <summary>
        /// 节点查询,返回节点值
        /// </summary>
        /// <param name="XmlPathNode">节点的路径 如:Data/ArticleInfo/ArticleTitle</param>
        /// <returns></returns>
        public string SelectNodeText(string XmlPathNode)
        {
            string _nodeTxt = xmlDoc.SelectSingleNode(XmlPathNode).InnerText;
            if (_nodeTxt == null || _nodeTxt == "")
                return "";
            else
                return _nodeTxt;
        }

        /// <summary>
        /// 根据id获得XmlElement
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public XmlElement GetElementById(string id)
        {
            return xmlDoc.GetElementById(id);
        }
        /// <summary>
        /// 根据节点名获得子节点列表
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public XmlNodeList GetElementsByTagName(string name)
        {
            return xmlDoc.GetElementsByTagName(name);
        }
        /// <summary>
        /// 根据节点名获得节点列表
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public XmlNodeList GetNodesByTagName(string name)
        {
            XmlNodeList nl = xmlDoc.GetElementsByTagName(name);
            return nl;
        }
        #endregion

        #region 改
        /// <summary>
        /// 设置节点值
        /// </summary>
        /// <param name="xPath">节点名</param>
        /// <param name="xmlNodeValue">节点值</param>
        public void SetXmlNodeValue(string xPath, string xmlNodeValue)
        {
            try
            {
                //根据指定路径获取节点
                XmlNode xmlNode = xmlDoc.SelectSingleNode(xPath);
                //设置节点值
                xmlNode.InnerText = xmlNodeValue;
            }
            catch (XmlException xmle)
            {
                throw xmle;
            }
        }

        /// <summary>
        /// 设置节点属性值 
        /// </summary>
        /// <param name="xPath">节点名XPath表达式,
        /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
        /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
        /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
        /// <param name="xmlNodeAttribute">属性名</param>
        /// <param name="xmlNodeAttributeValue">属性值</param>
        public void SetXmlNodeAttributeValue(string xPath, string xmlNodeAttribute, string xmlNodeAttributeValue)
        {
            try
            {
                //根据指定路径获取节点
                XmlNode xmlNode = xmlDoc.SelectSingleNode(xPath);
                xmlNode.Attributes[xmlNodeAttribute].Value = xmlNodeAttributeValue;
                xmlDoc.Save(this.xmlfilepath);
            }
            catch (XmlException xmle)
            {
                throw xmle;
            }
        }

        /// <summary>
        /// 根据id设置节点值
        /// </summary>
        /// <param name="id"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public void SetElementInnerTextById(string id, string value)
        {
            XmlElement ele = xmlDoc.GetElementById(id);
            if (ele != null)
                xmlDoc.GetElementById(id).InnerText = value;
        }
        #endregion

        #region 删除
        /// <summary>
        /// 删除一个节点及其子节点
        /// </summary>
        /// <param name="Node">要删除的节点</param>
        /// <returns></returns>
        public bool DeleteNode(string Node)
        {
            try
            {
                //XmlNode的RemoveChild方法来删除节点及其所有子节点
                xmlDoc.SelectSingleNode(Node).ParentNode.RemoveChild(xmlDoc.SelectSingleNode(Node));
                return true;
            }
            catch
            {
                return false;
            }
        }
        #endregion
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合; 2、3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高; 3、RC2和RC4:对称算法,用变长密钥对大量数据进行加密,比 DES 快; 4、IDEA(International Data Encryption Algorithm)国际数据加密算法,使用 128 位密钥提供非常强的安全性; 5、RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称算法; 6、DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法; 7、AES(Advanced Encryption Standard):高级加密标准,对称算法,是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是 Rijndael 算法; 8、BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快; 9、MD5:严格来说不算加密算法,只能说是摘要算法; 10、PKCS:The Public-Key Cryptography Standards (PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。 11、SSF33,SSF28,SCB2(SM1):国家密码局的隐蔽不公开的商用算法,在国内民用和商用的,除这些都不容许使用外,其他的都可以使用; 12、ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。 13、TEA(Tiny Encryption Algorithm)简单高效的加密算法,加密解密速度快,实现简单等等等等

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值