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
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值