XMLHelper.cs
编辑器加载中...
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相关推荐
- C#xml创建修改读取删除帮助类XmlHelper.cs
<strong><span style="color:#ff0000;">[XML帮助类]C#xml创建修改读取删除帮助类XmlHelper.cs < ...
- xml获取配置DataTable
在CSDN写博客时,经常遇到需要绑定数据源的时候,可是自己从数据库获取数据的函数都是已经封装好了的,这样别人复制你的代码,要想看到结果,还得修改修改,很是麻烦,博客实例,数据源简单点就好,这样别人写你 ...
- C#方便的生成函数字典
下面介绍一个方式能够很快的生成对C#函数的注释转成XML文档,这样能够减少很多的函数说明文档的撰写时间,直接进去主题: 有个解决方案下有个XmlHelper.cs 对于XML的通用操作类,下面是部分代 ...
- [知识库分享系列] 二、.NET(ASP.NET)
最近时间又有了新的想法,当我用新的眼光在整理一些很老的知识库时,发现很多东西都已经过时,或者是很基础很零碎的知识点.如果分享出去大家不看倒好,更担心的是会误人子弟,但为了保证此系列的完整,还是选择分享 ...
- C#操作xml完整类文件
C#操作xml完整类文件 xml_oper.cs using ...System; using System.Data; using System.Web; using System.Xml; /** ...
- C#一个完整的Log4net使用实例
Log4net库是.Net下一个非常优秀的开源日志记录组件,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具.它具有:支持多数框架.可输出日志到多种目标.层级日志体系.可使用X ...
- vs2003复制一个web窗体,没有更改指向同一个cs 文件,引发大问题
今天我在原来的考试系统的出题模块中,input模块,因为增加的一个web窗体编译有问题,于是就复制了原来的启动项页面input,再改了名字为set1,然后在set1页面上删除了控件和代码,再把set1 ...
- php 开发cs,PHP开发CS结构的技巧
PHP开发CS结构的技巧 PHP是一门高效的网络编程语言,由于它具有编写灵活.运行快速等优点,迅速成为Web程序员的`首选语言.以下是小编为大家搜索整理的PHP开发CS结构的技巧,希望能给大家带来帮助 ...
- vs中将网站aspx.cs文件打包成一个dll
vs中将网站aspx.cs文件打包成一个dll 23小时前 vs中将网站asp.net cs文件打包成一个dll. 在vs2008以上的版本中可以建立web应用来开发网站,这样网站aspx.cs文件[ ...
最新文章
- vcenter converter 转换xenserver下linux的错误
- 虚拟机上SourceInsight访问Linux系统的代码
- boost::geometry模块变换多边形的测试程序
- Hadoop Install
- mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException
- 512M内存编译php出错
- 使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容
- JS实现图片翻书效果
- python实现项目的复制_python实现复制大量文件功能
- 二十四、Java集合框架(一)
- 算法:转换二叉查找树为最大值加上当前值的数Convert BST to Greater Tree
- OCR身份证识别简单算法流程
- Unity Shader案例之——阴阳师画符效果
- 悦动圈跑步 随意提交步数 重大BUG漏洞 希望官方早些修复
- 敏捷DoD和DoR的多种形态
- 程序员坐行李箱迎寒风编码2小时,上热搜!你怎么看?
- 比chatgpt稍逊的ai问答网站phind,专用于编写代码
- #420 Div2 Problem B Okabe and Banana Trees (math 暴力枚举)
- OpenStack核心组件原理与应用之Nova(未完待续)
- 彻底搞懂Python一切皆对象!!!
热门文章
- SAP MM MM17里不能修改物料主数据'Purchasing Value Key'字段值?
- 牛津、剑桥、OpenAI 等多家机构发布重磅报告,论述恶意人工智能的「罪与罚」
- python如何将图片的像素矩阵绘制成图片(python,matplotlib):TypeError: Invalid shape (1, 28, 28) for image data
- 「九章」量子计算优越性遭北大院士质疑,潘建伟陆朝阳长文回应
- 刚刚Sci-Hub和特朗普一样被永久封禁,Twitter官方:不得上诉
- 剑桥大学发布2019年度AI发展报告,预测未来12个月AI产业6件大事
- 2019计算与系统神经科学大会Cosyne 前沿研究汇总
- 即使达到5级自动驾驶阶段,自动驾驶“卡车”也不可能完全“无人”
- 中国AI企业吸金旺但90%亏损 今年将迎倒闭潮
- 2017英国AI形势报告:认知鸿沟、新商业模式和当下的挑战