• xml文件操作类


        /// <summary>
        /// XML帮助类
        /// </summary>
        public class XMLHelper
        {
            public XmlDocument xmlDoc { get; set; }
    
            public XMLHelper()
            {
                this.xmlDoc = new XmlDocument();
            }
    
            #region Document
    
            /// <summary>
            /// 创建一个XML文档
            /// </summary>
            /// <param name="rootNodeName">XML文档根节点名称(须指定一个根节点名称)</param>
            /// <param name="version">XML文档版本号(必须为:"1.0")</param>
            /// <param name="encoding">XML文档编码方式</param>
            /// <param name="standalone">该值必须是"yes"或"no",如果为null,Save方法不在XML声明上写出独立属性</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateXmlDocument(string rootNodeName, string version, string encoding, string standalone)
            {
                try
                {
                    XmlDeclaration xmlDeclaration = this.xmlDoc.CreateXmlDeclaration(version, encoding, standalone);
                    XmlNode root = this.xmlDoc.CreateElement(rootNodeName);
                    this.xmlDoc.AppendChild(xmlDeclaration);
                    this.xmlDoc.AppendChild(root);
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            #endregion
    
            #region XmlNode
    
            #region 获取
    
    
            #endregion
    
            #region 创建
            /// <summary>
            /// 依据匹配XPath表达式的第一个节点来创建它的子节点(如果此节点已存在则追加一个新的同名节点
            /// </summary>
            /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
            /// <param name="xmlNodeName">节点名称</param>
            /// <param name="innerText">节点文本值</param>
            /// <param name="xmlAttributeName">属性键值对</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateXmlNodeForXPath(string xpath, string xmlNodeName, string innerText, NameValueCollection xmlAttributeNameValues)
            {
                try
                {
                    XmlNode xmlNode = this.xmlDoc.SelectSingleNode(xpath);
                    if (xmlNode == null)
                    {
                        return false;
                    }
                    XmlElement subElement = this.xmlDoc.CreateElement(xmlNodeName);
                    subElement.InnerXml = innerText;
    
                    if (this.CreateAttributeForElement(subElement, xmlAttributeNameValues))
                    {
                        return false;
                    }
                    xmlNode.AppendChild(subElement);
                }
                catch
                {
                    return false;
                }
                return true;
            }
            #endregion
    
            #region 创建或修改
            /// <summary>
            ///依据匹配XPath表达式的第一个节点来创建或更新它的子节点(如果节点存在则更新,不存在则创建) 
            /// </summary>
            /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
            /// <param name="xmlNodeName">节点名称</param>
            /// <param name="innerText">节点文本值</param>
            /// <param name="xmlAttributeNameValues">属性键值对</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateOrUpdateXmlNodeForXPath(string xpath, string xmlNodeName, string innerText, NameValueCollection xmlAttributeNameValues)
            {
                bool isExistsNode = false;//标识节点是否存在
                try
                {
                    XmlNode xmlNode = this.xmlDoc.SelectSingleNode(xpath);
                    if (xmlNode == null)
                        return false;
    
                    foreach (XmlNode node in xmlNode.ChildNodes)
                    {
                        if (node.Name.ToLower() == xmlNodeName.ToLower())
                        {
                            node.InnerXml = innerText;
    
                            if (CreateOrUpdateAttributeForNode(node, xmlAttributeNameValues))
                                return false;
    
                            isExistsNode = true;
                            break;
                        }
                    }
                    if (!isExistsNode)
                    {
                        XmlElement subElement = this.xmlDoc.CreateElement(xmlNodeName);
                        subElement.InnerXml = innerText;
                        if (this.CreateAttributeForElement(subElement, xmlAttributeNameValues))
                        {
                            return false;
                        }
                        xmlNode.AppendChild(subElement);
                    }
                }
                catch
                {
                    return false;
                }
                return true;
            }
            #endregion
    
            #region 删除
    
            /// <summary>
            /// 删除XPath的XmlNode(匹配XPath结果集合)
            /// </summary>
            /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名)</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool DeleteXmlNodeForXPath(string xpath)
            {
                try
                {
                    XmlNodeList xmlNodeList = this.xmlDoc.SelectNodes(xpath);
                    foreach (XmlNode xmlNode in xmlNodeList)
                    {
                        xmlNode.ParentNode.RemoveChild(xmlNode);
                    }
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 删除XmlNode
            /// </summary>
            /// <param name="xmlNode">XmlNode</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool DeleteXmlNodeForNode(XmlNode xmlNode)
            {
                try
                {
                    xmlNode.ParentNode.RemoveChild(xmlNode);
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 删除XmlElement
            /// </summary>
            /// <param name="XmlElement">XmlElement</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool DeleteXmlElementForXElement(XmlElement xmlElement)
            {
                try
                {
                    xmlElement.ParentNode.RemoveChild(xmlElement);
                }
                catch
                {
                    return false;
                }
                return true;
            }
            #endregion
    
            #endregion
    
            #region  Attribute
    
            #region 创建
            /// <summary>
            /// 创建XPath的Attribute(匹配XPath结果第一个)
            /// </summary>
            /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名)</param>
            /// <param name="xmlAttributeNameValues">XPath的属性键值集合</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateAttributeForXPathFirst(string xpath, NameValueCollection xmlAttributeNameValues)
            {
                try
                {
                    XmlNode xmlNode = this.xmlDoc.SelectSingleNode(xpath);
                    if (xmlNode == null)
                        return false;
    
                    return CreateAttributeForNode(xmlNode, xmlAttributeNameValues);
                }
                catch
                {
                    return false;
                }
            }
    
            /// <summary>
            /// 创建XPath的Attribute(匹配XPath结果集合)
            /// </summary>
            /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名)</param>
            /// <param name="xmlAttributeNameValues">XPath的属性键值集合</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateAttributeForXPath(string xpath, NameValueCollection xmlAttributeNameValues)
            {
                try
                {
                    XmlNodeList xmlNodeList = this.xmlDoc.SelectNodes(xpath);
                    foreach (XmlNode xmlNode in xmlNodeList)
                    {
                        if (!CreateAttributeForNode(xmlNode, xmlAttributeNameValues))
                            return false;
                    }
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 创建XmlNode的Attribute
            /// </summary>
            /// <param name="xmlNode">XmlNode</param>
            /// <param name="xmlAttributeNameValues">XmlNode的属性键值集合</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateAttributeForNode(XmlNode xmlNode, NameValueCollection xmlAttributeNameValues)
            {
                try
                {
                    if (xmlNode == null)
                        return false;
    
                    if (xmlAttributeNameValues == null)
                        return true;
    
                    foreach (string key in xmlAttributeNameValues.Keys)
                    {
                        if (String.IsNullOrWhiteSpace(key))
                            break;
    
                        if (xmlNode.Attributes[key] != null)
                            break;
    
                        XmlAttribute xmlAttribute = this.xmlDoc.CreateAttribute(key);
                        xmlAttribute.Value = xmlAttributeNameValues[key];
                        xmlNode.Attributes.Append(xmlAttribute);
                    }
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 创建XmlElement的Attribute
            /// </summary>
            /// <param name="xmlElement">XmlElement</param>
            /// <param name="xmlAttributeNameValues">XmlElement的属性键值集合</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateAttributeForElement(XmlElement xmlElement, NameValueCollection xmlAttributeNameValues)
            {
                try
                {
                    if (xmlElement == null)
                        return false;
    
                    if (xmlAttributeNameValues == null)
                        return true;
    
                    foreach (string key in xmlAttributeNameValues.Keys)
                    {
                        if (String.IsNullOrWhiteSpace(key))
                            break;
    
                        if (xmlElement.Attributes[key] != null)
                            break;
    
                        XmlAttribute xmlAttribute = this.xmlDoc.CreateAttribute(key);
                        xmlAttribute.Value = xmlAttributeNameValues[key];
                        xmlElement.Attributes.Append(xmlAttribute);
                    }
                }
                catch
                {
                    return false;
                }
                return true;
            }
            #endregion
    
            #region 创建或修改
            /// <summary>
            /// 创建或修改XPath的Attribute(匹配XPath结果第一个)
            /// </summary>
            /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名)</param>
            /// <param name="xmlAttributeNameValues">XPath的属性键值集合</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateOrUpdateXmlAttributeForXPathFirst(string xpath, NameValueCollection xmlAttributeNameValues)
            {
                try
                {
                    XmlNode xmlNode = this.xmlDoc.SelectSingleNode(xpath);
                    if (xmlNode == null)
                        return false;
    
                    if (!CreateOrUpdateAttributeForNode(xmlNode, xmlAttributeNameValues))
                        return false;
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 创建或修改XPath的Attribute(匹配XPath结果集合)
            /// </summary>
            /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名)</param>
            /// <param name="xmlAttributeNameValues">XPath的属性键值集合</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateOrUpdateXmlAttributeForXPath(string xpath, NameValueCollection xmlAttributeNameValues)
            {
                try
                {
                    XmlNodeList xmlNodeList = this.xmlDoc.SelectNodes(xpath);
                    foreach (XmlNode xmlNode in xmlNodeList)
                    {
                        if (!CreateOrUpdateAttributeForNode(xmlNode, xmlAttributeNameValues))
                            return false;
                    }
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 创建或修改XmlNode的Attribute
            /// </summary>
            /// <param name="xmlNode">XmlNode</param>
            /// <param name="xmlAttributeNameValues">XmlNode的属性键值集合</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateOrUpdateAttributeForNode(XmlNode xmlNode, NameValueCollection xmlAttributeNameValues)
            {
                try
                {
                    if (xmlNode == null)
                        return false;
    
                    if (xmlAttributeNameValues == null)
                        return true;
    
                    foreach (string key in xmlAttributeNameValues.Keys)
                    {
                        if (String.IsNullOrWhiteSpace(key))
                            break;
    
                        if (xmlNode.Attributes[key] == null)
                        {
                            XmlAttribute xmlAttribute = this.xmlDoc.CreateAttribute(key);
                            xmlAttribute.Value = xmlAttributeNameValues[key];
                            xmlNode.Attributes.Append(xmlAttribute);
                        }
                        else
                        {
                            ((XmlAttribute)xmlNode.Attributes[key]).Value = xmlAttributeNameValues[key];
                        }
                    }
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 创建或修改XmlElement的Attribute
            /// </summary>
            /// <param name="xmlElement">XmlElement</param>
            /// <param name="xmlAttributeNameValues">XmlElement的属性键值集合</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool CreateOrUpdateAttributeForElement(XmlElement xmlElement, NameValueCollection xmlAttributeNameValues)
            {
                try
                {
                    if (xmlElement == null)
                        return false;
    
                    if (xmlAttributeNameValues == null)
                        return true;
    
                    foreach (string key in xmlAttributeNameValues.Keys)
                    {
                        if (String.IsNullOrWhiteSpace(key))
                            break;
    
                        if (xmlElement.Attributes[key] == null)
                        {
                            XmlAttribute xmlAttribute = this.xmlDoc.CreateAttribute(key);
                            xmlAttribute.Value = xmlAttributeNameValues[key];
                            xmlElement.Attributes.Append(xmlAttribute);
                        }
                        else
                        {
                            ((XmlAttribute)xmlElement.Attributes[key]).Value = xmlAttributeNameValues[key];
                        }
                    }
                }
                catch
                {
                    return false;
                }
                return true;
            }
            #endregion
    
            #region 删除
            /// <summary>
            /// 删除XPath的Attribute(匹配XPath结果第一个)
            /// </summary>
            /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名)</param>
            /// <param name="xmlAttributeName">Attribute名称</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool DeleteAttributeForXPathFirst(string xpath, string xmlAttributeName)
            {
                try
                {
                    XmlNodeList xmlNodeList = this.xmlDoc.SelectNodes(xpath);
                    foreach (XmlNode xmlNode in xmlNodeList)
                    {
                        if (!DeleteAttributeForElement(xmlNode, xmlAttributeName))
                            return false;
                    }
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 删除XPath的Attribute(匹配XPath结果集合)
            /// </summary>
            /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名)</param>
            /// <param name="xmlAttributeName">Attribute名称</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool DeleteAttributeForXPath(string xpath, string xmlAttributeName)
            {
                try
                {
                    XmlNodeList xmlNodeList = this.xmlDoc.SelectNodes(xpath);
                    foreach (XmlNode xmlNode in xmlNodeList)
                    {
                        if (!DeleteAttributeForElement(xmlNode, xmlAttributeName))
                            return false;
                    }
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 删除XmlNode的指定名称Attribute
            /// </summary>
            /// <param name="xmlNode">XmlNode</param>
            /// <param name="xmlAttributeName">Attribute名称</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool DeleteAttributeForElement(XmlNode xmlNode, string xmlAttributeName)
            {
                try
                {
                    if (xmlNode == null)
                        return false;
    
                    xmlNode.Attributes.Remove(xmlNode.Attributes[xmlAttributeName]);
                }
                catch
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 删除XmlElement的指定名称Attribute
            /// </summary>
            /// <param name="xmlElement">XmlElement</param>
            /// <param name="xmlAttributeName">Attribute名称</param>
            /// <returns>成功返回true,失败返回false</returns>
            public bool DeleteAttributeForElement(XmlElement xmlElement, string xmlAttributeName)
            {
                try
                {
                    if (xmlElement == null)
                        return false;
    
                    xmlElement.Attributes.Remove(xmlElement.Attributes[xmlAttributeName]);
                }
                catch
                {
                    return false;
                }
                return true;
            }
            #endregion
    
            #endregion
        }
  • 相关阅读:
    关于session的记录
    关于<input type="hidden"/>标签的记录
    H3C S5120V2-SI 交换机配置
    Windows 系列GVLK密钥
    给因特尔S2600CO服务器主板安装【SAS控制器】驱动
    EMQ消息队列初体验
    泰国佛历的换算问题
    linux下批量查找UTF-8的BOM文件,并去除BOM
    菲律宾Globe/TM卡最省钱的上网方案
    Windows计划任务实现MYSQL冷备份
  • 原文地址:https://www.cnblogs.com/tlmbem/p/12162655.html
Copyright © 2020-2023  润新知