编辑器加载中...

using System;using System.Collections.Generic;using System.Web;

using System.Xml;

namespace RealEstateInfoManageSystem{

///<summary>/// XMLHelper XML文档操作管理器///</summary>    public class XMLHelper    {public XMLHelper()        {//// TODO: 在此处添加构造函数逻辑//        }

#region XML文档节点查询和读取///<summary>/// 选择匹配XPath表达式的第一个节点XmlNode.///</summary>///<param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>///<param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名")</param>///<returns>返回XmlNode</returns>        public static XmlNode GetXmlNodeByXpath(string xmlFileName, string xpath)        {            XmlDocument xmlDoc = new XmlDocument();try            {                xmlDoc.Load(xmlFileName); //加载XML文档                XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);return xmlNode;            }catch (Exception ex)            {return null;//throw ex; //这里可以定义你自己的异常处理            }        }

///<summary>/// 选择匹配XPath表达式的节点列表XmlNodeList.///</summary>///<param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>///<param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名")</param>///<returns>返回XmlNodeList</returns>        public static XmlNodeList GetXmlNodeListByXpath(string xmlFileName, string xpath)        {            XmlDocument xmlDoc = new XmlDocument();

try            {                xmlDoc.Load(xmlFileName); //加载XML文档                XmlNodeList xmlNodeList = xmlDoc.SelectNodes(xpath);return xmlNodeList;            }catch (Exception ex)            {return null;//throw ex; //这里可以定义你自己的异常处理            }        }

///<summary>/// 选择匹配XPath表达式的第一个节点的匹配xmlAttributeName的属性XmlAttribute.///</summary>///<param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>///<param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>///<param name="xmlAttributeName">要匹配xmlAttributeName的属性名称</param>///<returns>返回xmlAttributeName</returns>        public static XmlAttribute GetXmlAttribute(string xmlFileName, string xpath, string xmlAttributeName)        {string content = string.Empty;            XmlDocument xmlDoc = new XmlDocument();            XmlAttribute xmlAttribute = null;try            {                xmlDoc.Load(xmlFileName); //加载XML文档                XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);if (xmlNode != null)                {if (xmlNode.Attributes.Count > 0)                    {                        xmlAttribute = xmlNode.Attributes[xmlAttributeName];                    }                }            }catch (Exception ex)            {throw ex; //这里可以定义你自己的异常处理            }return xmlAttribute;        }#endregion

#region XML文档创建和节点或属性的添加、修改///<summary>/// 创建一个XML文档///</summary>///<param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>///<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 static bool CreateXmlDocument(string xmlFileName, string rootNodeName, string version, string encoding, string standalone)        {bool isSuccess = false;try            {                XmlDocument xmlDoc = new XmlDocument();                XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration(version, encoding, standalone);                XmlNode root = xmlDoc.CreateElement(rootNodeName);                xmlDoc.AppendChild(xmlDeclaration);                xmlDoc.AppendChild(root);                xmlDoc.Save(xmlFileName);                isSuccess = true;            }catch (Exception ex)            {throw ex; //这里可以定义你自己的异常处理            }return isSuccess;        }

///<summary>/// 依据匹配XPath表达式的第一个节点来创建它的子节点(如果此节点已存在则追加一个新的同名节点///</summary>///<param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>///<param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>///<param name="xmlNodeName">要匹配xmlNodeName的节点名称</param>///<param name="innerText">节点文本值</param>///<param name="xmlAttributeName">要匹配xmlAttributeName的属性名称</param>///<param name="value">属性值</param>///<returns>成功返回true,失败返回false</returns>        public static bool CreateXmlNodeByXPath(string xmlFileName, string xpath, string xmlNodeName, string innerText, string xmlAttributeName, string value)        {bool isSuccess = false;            XmlDocument xmlDoc = new XmlDocument();try            {                xmlDoc.Load(xmlFileName); //加载XML文档                XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);if (xmlNode != null)                {//存不存在此节点都创建                    XmlElement subElement = xmlDoc.CreateElement(xmlNodeName);                    subElement.InnerXml = innerText;

//如果属性和值参数都不为空则在此新节点上新增属性                    if (!string.IsNullOrEmpty(xmlAttributeName) && !string.IsNullOrEmpty(value))                    {                        XmlAttribute xmlAttribute = xmlDoc.CreateAttribute(xmlAttributeName);                        xmlAttribute.Value = value;                        subElement.Attributes.Append(xmlAttribute);                    }

                    xmlNode.AppendChild(subElement);                }                xmlDoc.Save(xmlFileName); //保存到XML文档                isSuccess = true;            }catch (Exception ex)            {throw ex; //这里可以定义你自己的异常处理            }return isSuccess;        }

///<summary>/// 依据匹配XPath表达式的第一个节点来创建或更新它的子节点(如果节点存在则更新,不存在则创建)///</summary>///<param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>///<param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>///<param name="xmlNodeName">要匹配xmlNodeName的节点名称</param>///<param name="innerText">节点文本值</param>///<returns>成功返回true,失败返回false</returns>        public static bool CreateOrUpdateXmlNodeByXPath(string xmlFileName, string xpath, string xmlNodeName, string innerText)        {bool isSuccess = false;bool isExistsNode = false;//标识节点是否存在            XmlDocument xmlDoc = new XmlDocument();try            {                xmlDoc.Load(xmlFileName); //加载XML文档                XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);if (xmlNode != null)                {//遍历xpath节点下的所有子节点                    foreach (XmlNode node in xmlNode.ChildNodes)                    {if (node.Name.ToLower() == xmlNodeName.ToLower())                        {//存在此节点则更新                            node.InnerXml = innerText;                            isExistsNode = true;break;                        }                    }if (!isExistsNode)                    {//不存在此节点则创建                        XmlElement subElement = xmlDoc.CreateElement(xmlNodeName);                        subElement.InnerXml = innerText;                        xmlNode.AppendChild(subElement);                    }                }                xmlDoc.Save(xmlFileName); //保存到XML文档                isSuccess = true;            }catch (Exception ex)            {throw ex; //这里可以定义你自己的异常处理            }return isSuccess;        }

///<summary>/// 依据匹配XPath表达式的第一个节点来创建或更新它的属性(如果属性存在则更新,不存在则创建)///</summary>///<param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>///<param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>///<param name="xmlAttributeName">要匹配xmlAttributeName的属性名称</param>///<param name="value">属性值</param>///<returns>成功返回true,失败返回false</returns>        public static bool CreateOrUpdateXmlAttributeByXPath(string xmlFileName, string xpath, string xmlAttributeName, string value)        {bool isSuccess = false;bool isExistsAttribute = false;//标识属性是否存在            XmlDocument xmlDoc = new XmlDocument();try            {                xmlDoc.Load(xmlFileName); //加载XML文档                XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);if (xmlNode != null)                {//遍历xpath节点中的所有属性                    foreach (XmlAttribute attribute in xmlNode.Attributes)                    {if (attribute.Name.ToLower() == xmlAttributeName.ToLower())                        {//节点中存在此属性则更新                            attribute.Value = value;                            isExistsAttribute = true;break;                        }                    }if (!isExistsAttribute)                    {//节点中不存在此属性则创建                        XmlAttribute xmlAttribute = xmlDoc.CreateAttribute(xmlAttributeName);                        xmlAttribute.Value = value;                        xmlNode.Attributes.Append(xmlAttribute);                    }                }                xmlDoc.Save(xmlFileName); //保存到XML文档                isSuccess = true;            }catch (Exception ex)            {throw ex; //这里可以定义你自己的异常处理            }return isSuccess;        }#endregion

#region XML文档节点或属性的删除///<summary>/// 删除匹配XPath表达式的第一个节点(节点中的子元素同时会被删除)///</summary>///<param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>///<param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>///<returns>成功返回true,失败返回false</returns>        public static bool DeleteXmlNodeByXPath(string xmlFileName, string xpath)        {bool isSuccess = false;            XmlDocument xmlDoc = new XmlDocument();try            {                xmlDoc.Load(xmlFileName); //加载XML文档                XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);if (xmlNode != null)                {//删除节点                    xmlNode.ParentNode.RemoveChild(xmlNode);                }                xmlDoc.Save(xmlFileName); //保存到XML文档                isSuccess = true;            }catch (Exception ex)            {throw ex; //这里可以定义你自己的异常处理            }return isSuccess;        }

///<summary>/// 删除匹配XPath表达式的第一个节点中的匹配参数xmlAttributeName的属性///</summary>///<param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>///<param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>///<param name="xmlAttributeName">要删除的xmlAttributeName的属性名称</param>///<returns>成功返回true,失败返回false</returns>        public static bool DeleteXmlAttributeByXPath(string xmlFileName, string xpath, string xmlAttributeName)        {bool isSuccess = false;bool isExistsAttribute = false;            XmlDocument xmlDoc = new XmlDocument();try            {                xmlDoc.Load(xmlFileName); //加载XML文档                XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);                XmlAttribute xmlAttribute = null;if (xmlNode != null)                {//遍历xpath节点中的所有属性                    foreach (XmlAttribute attribute in xmlNode.Attributes)                    {if (attribute.Name.ToLower() == xmlAttributeName.ToLower())                        {//节点中存在此属性                            xmlAttribute = attribute;                            isExistsAttribute = true;break;                        }                    }if (isExistsAttribute)                    {//删除节点中的属性                        xmlNode.Attributes.Remove(xmlAttribute);                    }                }                xmlDoc.Save(xmlFileName); //保存到XML文档                isSuccess = true;            }catch (Exception ex)            {throw ex; //这里可以定义你自己的异常处理            }return isSuccess;        }

///<summary>/// 删除匹配XPath表达式的第一个节点中的所有属性///</summary>///<param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>///<param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>///<returns>成功返回true,失败返回false</returns>        public static bool DeleteAllXmlAttributeByXPath(string xmlFileName, string xpath)        {bool isSuccess = false;            XmlDocument xmlDoc = new XmlDocument();try            {                xmlDoc.Load(xmlFileName); //加载XML文档                XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);if (xmlNode != null)                {//遍历xpath节点中的所有属性                    xmlNode.Attributes.RemoveAll();                }                xmlDoc.Save(xmlFileName); //保存到XML文档                isSuccess = true;            }catch (Exception ex)            {throw ex; //这里可以定义你自己的异常处理            }return isSuccess;        }#endregion

    }}

转载于:https://www.cnblogs.com/longle/archive/2011/11/28/XMLHelper.html

XMLHelper.cs相关推荐

  1. C#xml创建修改读取删除帮助类XmlHelper.cs

    <strong><span style="color:#ff0000;">[XML帮助类]C#xml创建修改读取删除帮助类XmlHelper.cs < ...

  2. xml获取配置DataTable

    在CSDN写博客时,经常遇到需要绑定数据源的时候,可是自己从数据库获取数据的函数都是已经封装好了的,这样别人复制你的代码,要想看到结果,还得修改修改,很是麻烦,博客实例,数据源简单点就好,这样别人写你 ...

  3. C#方便的生成函数字典

    下面介绍一个方式能够很快的生成对C#函数的注释转成XML文档,这样能够减少很多的函数说明文档的撰写时间,直接进去主题: 有个解决方案下有个XmlHelper.cs 对于XML的通用操作类,下面是部分代 ...

  4. [知识库分享系列] 二、.NET(ASP.NET)

    最近时间又有了新的想法,当我用新的眼光在整理一些很老的知识库时,发现很多东西都已经过时,或者是很基础很零碎的知识点.如果分享出去大家不看倒好,更担心的是会误人子弟,但为了保证此系列的完整,还是选择分享 ...

  5. C#操作xml完整类文件

    C#操作xml完整类文件 xml_oper.cs using ...System; using System.Data; using System.Web; using System.Xml; /** ...

  6. C#一个完整的Log4net使用实例

    Log4net库是.Net下一个非常优秀的开源日志记录组件,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具.它具有:支持多数框架.可输出日志到多种目标.层级日志体系.可使用X ...

  7. vs2003复制一个web窗体,没有更改指向同一个cs 文件,引发大问题

    今天我在原来的考试系统的出题模块中,input模块,因为增加的一个web窗体编译有问题,于是就复制了原来的启动项页面input,再改了名字为set1,然后在set1页面上删除了控件和代码,再把set1 ...

  8. php 开发cs,PHP开发CS结构的技巧

    PHP开发CS结构的技巧 PHP是一门高效的网络编程语言,由于它具有编写灵活.运行快速等优点,迅速成为Web程序员的`首选语言.以下是小编为大家搜索整理的PHP开发CS结构的技巧,希望能给大家带来帮助 ...

  9. vs中将网站aspx.cs文件打包成一个dll

    vs中将网站aspx.cs文件打包成一个dll 23小时前 vs中将网站asp.net cs文件打包成一个dll. 在vs2008以上的版本中可以建立web应用来开发网站,这样网站aspx.cs文件[ ...

最新文章

  1. vcenter converter 转换xenserver下linux的错误
  2. 虚拟机上SourceInsight访问Linux系统的代码
  3. boost::geometry模块变换多边形的测试程序
  4. Hadoop Install
  5. mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException
  6. 512M内存编译php出错
  7. 使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容
  8. JS实现图片翻书效果
  9. python实现项目的复制_python实现复制大量文件功能
  10. 二十四、Java集合框架(一)
  11. 算法:转换二叉查找树为最大值加上当前值的数Convert BST to Greater Tree
  12. OCR身份证识别简单算法流程
  13. Unity Shader案例之——阴阳师画符效果
  14. 悦动圈跑步 随意提交步数 重大BUG漏洞 希望官方早些修复
  15. 敏捷DoD和DoR的多种形态
  16. 程序员坐行李箱迎寒风编码2小时,上热搜!你怎么看?
  17. 比chatgpt稍逊的ai问答网站phind,专用于编写代码
  18. #420 Div2 Problem B Okabe and Banana Trees (math 暴力枚举)
  19. OpenStack核心组件原理与应用之Nova(未完待续)
  20. 彻底搞懂Python一切皆对象!!!

热门文章

  1. SAP MM MM17里不能修改物料主数据'Purchasing Value Key'字段值?
  2. 牛津、剑桥、OpenAI 等多家机构发布重磅报告,论述恶意人工智能的「罪与罚」
  3. python如何将图片的像素矩阵绘制成图片(python,matplotlib):TypeError: Invalid shape (1, 28, 28) for image data
  4. 「九章」量子计算优越性遭北大院士质疑,潘建伟陆朝阳长文回应
  5. 刚刚Sci-Hub和特朗普一样被永久封禁,Twitter官方:不得上诉
  6. 剑桥大学发布2019年度AI发展报告,预测未来12个月AI产业6件大事
  7. 2019计算与系统神经科学大会Cosyne 前沿研究汇总
  8. 即使达到5级自动驾驶阶段,自动驾驶“卡车”也不可能完全“无人”
  9. 中国AI企业吸金旺但90%亏损 今年将迎倒闭潮
  10. 2017英国AI形势报告:认知鸿沟、新商业模式和当下的挑战