XML文件读取工具类

/// <summary>
/// Author: jiangxiaoqiang
/// </summary>
public class XmlReader
{//========================================================= //
#region 获取XmlDocument对象/// <summary>/// 根据XML文件内容获取XmlDocument对象/// </summary>/// <param name="xmlFileContent"></param>/// <returns></returns>public static XmlDocument GetXmlDocByXmlContent(string xmlFileContent){if (string.IsNullOrEmpty(xmlFileContent)){return null;}var xDoc = new XmlDocument();try{xDoc.LoadXml(xmlFileContent);}catch{xDoc = null;}return xDoc;}/// <summary>/// 根据XML文件路径获取XmlDocument对象/// </summary>/// <param name="xmlFilePath"></param>/// <returns></returns>public static XmlDocument GetXmlDocByFilePath(string xmlFilePath){if (string.IsNullOrEmpty(xmlFilePath) || !File.Exists(xmlFilePath)){return null;}var xDoc = new XmlDocument();try{xDoc.Load(xmlFilePath);}catch{throw new Exception(string.Format("请确认该XML文件格式正确,路径为:{0}", xmlFilePath));}return xDoc;}#endregion//========================================================= ////========================================================= //
#region 获取XML节点(或节点列表)/// <summary>/// 获取父节点下指定节点名称的第一个子节点/// </summary>/// <param name="parentXmlNode"></param>/// <param name="childNodeName"></param>/// <returns></returns>public static XmlNode GetFirstChildNodeByName(XmlNode parentXmlNode, string childNodeName){var childXmlNodes = GetChildNodesByName(parentXmlNode, childNodeName);if (childXmlNodes != null && childXmlNodes.Count > 0){return childXmlNodes[0];}return null;}/// <summary>/// 获取父节点下指定节点名称的子节点列表/// </summary>/// <param name="parentXmlNode">父节点</param>/// <param name="nodeName">节点名称</param>/// <returns></returns>public static XmlNodeList GetChildNodesByName(XmlNode parentXmlNode, string nodeName){if (parentXmlNode == null || string.IsNullOrEmpty(nodeName)){return null;}return GetChildNodesByXPathExpr(parentXmlNode, string.Format(".//{0}", nodeName));}/// <summary>/// 获取父节点下满足xpathExpr表达式的XML子节点列表/// </summary>/// <param name="parentXmlNode">父节点</param>/// <param name="xpathExpr"></param>/// <returns></returns>   public static XmlNodeList GetChildNodesByXPathExpr(XmlNode parentXmlNode, string xpathExpr){if (parentXmlNode == null || string.IsNullOrEmpty(xpathExpr)){return null;}return parentXmlNode.SelectNodes(xpathExpr);}/// <summary>/// 获取父节点下的第一个子节点/// </summary>/// <param name="parentXmlNode"></param>/// <returns></returns>public static XmlNode GetFirstChildNode(XmlNode parentXmlNode){var childXmlNodes = GetChildNodes(parentXmlNode);if (childXmlNodes != null && childXmlNodes.Count > 0){return childXmlNodes[0];}return null;}/// <summary>/// 获取父节点的子节点列表/// </summary>/// <param name="parentXmlNode">父节点</param>/// <returns></returns>public static XmlNodeList GetChildNodes(XmlNode parentXmlNode){return parentXmlNode == null ? null : parentXmlNode.ChildNodes;}#endregion//========================================================= ////========================================================= //
#region 读取节点属性值/// <summary>/// 读取某个XML节点的属性值(根据属性名)/// </summary>/// <param name="xmlNode"></param>/// <param name="attrName"></param>/// <returns></returns>public static string ReadAttrValue(XmlNode xmlNode, string attrName){var xmlElement = xmlNode as XmlElement;return xmlElement == null ? null : xmlElement.GetAttribute(attrName);}/// <summary>/// 读取父节点下指定节点名和属性名的第一个子节点的属性值/// </summary>/// <param name="parentXmlNode">XML父节点</param>/// <param name="childNodeName">节点名称</param>/// <param name="attrName">属性名</param>/// <returns></returns>public static string ReadFirstAttrValue(XmlNode parentXmlNode, string childNodeName, string attrName){var attrVals = ReadAttrValues(parentXmlNode, childNodeName, attrName);return (attrVals == null || attrVals.Length == 0) ? null : attrVals[0];}/// <summary>/// 读取父节点下指定节点名和属性名的所有子节点的该属性值的数组/// </summary>/// <param name="parentXmlNode">XML文档</param>/// <param name="childNodeName">节点名称</param>/// <param name="attrName">属性名</param>/// <returns></returns>public static string[] ReadAttrValues(XmlNode parentXmlNode, string childNodeName, string attrName){if (parentXmlNode == null || string.IsNullOrEmpty(childNodeName) || string.IsNullOrEmpty(attrName)){return null;}var xpathExpr = string.Format("//{0}[@{1}]", childNodeName, attrName);var nodes = GetChildNodesByXPathExpr(parentXmlNode, xpathExpr);if (nodes != null && nodes.Count > 0){var nodeCount = nodes.Count;var attrVals = new string[nodeCount];for (var i = 0; i < nodeCount; i++){attrVals[i] = ((XmlElement)nodes[i]).GetAttribute(attrName);}return attrVals;}return null;}#endregion//========================================================= ////========================================================= //
#region 读取父节点下的子节点的文本内容/// <summary>/// 读取父节点下指定节点名的第一个子节点的文本/// </summary>/// <param name="parentXmlNode"></param>/// <param name="childNodeName"></param>/// <returns></returns>public static string ReadFirstChildNodeTextByName(XmlNode parentXmlNode, string childNodeName){var childNodeTexts = ReadChildNodeTextsByName(parentXmlNode, childNodeName);if (childNodeTexts != null && childNodeTexts.Length > 0){return childNodeTexts[0];}return null;}/// <summary>/// 读取父节点下指定节点名的所有子节点的文本数组/// </summary>/// <param name="parentXmlNode"></param>/// <param name="childNodeName"></param>/// <returns></returns>public static string[] ReadChildNodeTextsByName(XmlNode parentXmlNode, string childNodeName){if (parentXmlNode == null || string.IsNullOrEmpty(childNodeName)){return null;}var xpathExpr = string.Format(".//{0}", childNodeName);var childNodes = GetChildNodesByXPathExpr(parentXmlNode, xpathExpr);if (childNodes != null && childNodes.Count > 0){var nodeCount = childNodes.Count;var nodeTexts = new string[nodeCount];for (var i = 0; i < nodeCount; i++){nodeTexts[i] = childNodes[i].InnerText;}return nodeTexts;}return null;}/// <summary>/// 读取父节点下的第一个子节点的文本/// </summary>/// <param name="parentXmlNode"></param>/// <returns></returns>public static string ReadFirstChildNodeText(XmlNode parentXmlNode){var childNodeTexts = ReadChildNodeTexts(parentXmlNode);if (childNodeTexts != null && childNodeTexts.Length > 0){return childNodeTexts[0];}return null;}/// <summary>/// 读取父节点下的所有子节点的文本数组/// </summary>/// <param name="parentXmlNode"></param>/// <returns></returns>public static string[] ReadChildNodeTexts(XmlNode parentXmlNode){if (parentXmlNode == null){return null;}var childNodes = GetChildNodes(parentXmlNode);if (childNodes != null && childNodes.Count > 0){var nodeCount = childNodes.Count;var nodeTexts = new string[nodeCount];for (var i = 0; i < nodeCount; i++){nodeTexts[i] = childNodes[i].InnerText;}return nodeTexts;}return null;}/// <summary>/// 读取XML节点文本/// </summary>/// <param name="xmlNode"></param>/// <returns></returns>public static string ReadNodeText(XmlNode xmlNode){if (xmlNode == null){return null;}return xmlNode.InnerText;}#endregion//========================================================= //
}

 

转载于:https://www.cnblogs.com/xiashenbin/p/3167324.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下面为子代选择器结合符的是_郑州大学编译原理试卷及答案(往年试题整合)

二填空题1. 不同的编译程序关于数据空间的存储分配策略可能不同&#xff0c;但大部分编译中采用的方案有两种&#xff1a;静态存储分配方案和动态存储分配方案&#xff0c;而后者又分为(1)和(2)。 2. 规范规约是最(3)规约。3. 编译程序的工作过程一般划分为5个阶段&#xff1a;…

计算机组成原理-数据的表示和运算(图片资源摘自王道考研资料)

一、进位计数制 二、BCD码 此处&#xff1a; 58 0101 1000 1101 超出数据能表达的范围&#xff0c;因为 8421码只能表示0-9 十以上数据视为无效数据&#xff0c;因此在此基础上加六&#xff0c;进行校正--> 11010110 0001 0011 ----拆成两个看

lacp可以在access接口吗_现网必用的链路冗余技术,静态LACP链路捆绑,两分钟快速掌握...

一、链路聚合链路聚合(Link Aggregation)是将—组物理接口捆绑在一起作为一个逻辑接口来增加带宽的一种方法&#xff0c;又称为多接口负载均衡组(Load Sharing Group)或链路聚合组(Link Aggregation Group)1、配置手工负载分担模式链路聚合手工负载分担模式下&#xff0c;Eth-T…

ddl dml dcl

DCL数据控制语言 创建临时表空间 create temporary tablespace user_temp tempfile E:/oracle/product/10.1.0/oradata/orcl/user_temp.dbf size 50m autoextend on next 32m maxsize 2048m extent management local; 创建用户表空间 CREATE TABLESPACE tbs_sns_…

Spring 集成web环境

Spring 集成web环境 一、配置ContextLoaderListener 监听器 1.maven坐标 org.springframework spring-web 5.3.14 2.web.xml <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</para…

一只青蛙跳向三个台阶_8. 跳台阶

一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。1. 思路&#xff1a;若只有一级台阶&#xff1a;一种跳法两级台阶&#xff1a;两种跳法(11 / 2)三级台阶&#xff1a;三种跳法(111 / 12 / 21)四级台阶&#xff1a;五种跳法…

spring 框架(一)

目录 一、spring简介 二、spring入门 三、spring配置文件 3.1.bean标签的基本配置(applicationContext.xml) 3.2Bean&#xff08;scope:指对象的作用范围&#xff09;标签范围配置 3.3 Bean生命周期配置 3.4 Bean实例化三种方式 3.5 Bean的依赖注入入门 3.6 Bean的依赖…

wireshark过滤使用

过滤器的区别 捕捉过滤器&#xff08;CaptureFilters&#xff09;&#xff1a;用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。显示过滤器&#xff08;DisplayFilters&#xff09;&#xff1a;在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。那…

cdr添加节点快捷键_CDR快捷键分享,需要的赶紧收藏!

点击上方蓝字&#xff0c;关注我们哦&#xff01;&#xff01;有粉丝在后台留言说&#xff0c;希望我分享一下CDR的快捷键&#xff0c;今天我整理了一下快捷键。来源&#xff1a;内容整理自网络&#xff0c;仅供学习交流一工具箱I 绘制曲线&#xff0c;并对笔划使用预置、画刷、…

spring 框架(二)

目录 一、Spring配置数据源 1.1 数据源(连接池)的作用 1.2数据源的使用 1.3基本实现 1.4.抽取配置文件&#xff0c;降低耦合性(druid) 1.4.1抽取jdbc.properties文件 1.4.2设置数据源的基本连接数据&#xff0c;通过applicationContext.xml设置数据库参数applicationCon…

学生通信系统

学生通信系统。能导入外部提供的包含学生通讯信息的文件&#xff08;txt文件&#xff09;。能在程序中录入修改学生通讯信息&#xff08;学号&#xff0c;姓名&#xff0c;手机号&#xff0c;宿舍电话号&#xff0c;宿舍门牌号&#xff0c;性别&#xff0c;民族&#xff0c;出生…

matplotlib 对称图_Python 绘图,我只用 Matplotlib

散点图散点图显示两组数据的值&#xff0c;如图1-1所示。每个点的坐标位置由变量的值决定&#xff0c;并由一组不连接的点完成&#xff0c;用于观察两种变量的相关性。例如&#xff0c;身高—体重、温度—维度。图1-1 散点图示例使用Matplotlib的scatter()函数绘制散点图&#…

spring框架(三)mvc

目录 1.1准备测试数据 1.2 ApplicationContext应用上下文获取方式 1.2.1添加listener包 1.2.2解耦配置文件 1.2.3 继续提取ContextLoaderListener.java中参数app 1.2.4 Spring提供获取应用上下文的工具 二、SpringMVC 2.1概述 2.2数据准备 2.3添加success.jsp页面 2.4 …

稳定判据_Nyquist稳定判据

这里是一则小广告&#xff1a;关注作者请点击这里哦&#xff1a;zdr0我的专栏里面不仅有学习笔记&#xff0c;也有一些科普文章&#xff0c;相信我的专栏不会让您失望哦&#xff5e;大家可以关注一下&#xff1a;数学及自然科学记得点赞加收藏哦&#xff5e;创作不易&#xff0…

简单的绑定数据截取时间字符年月日

方法一&#xff1a;后台 if (dt.Rows[0]["CheckCertIssueDate"].ToString() ! "") { Label19.Text dt.Rows[0]["CheckCertIssueDate"].ToString().Substring(0, 9); } else …

python判断字符串中包含某个字符串_干货分享| Python中最常用的字符串方法

字符串是字符序列。Python中内置的string类代表基于Unicode国际字符集的字符串。除了Python中常见的操作外,字符串还有一些专属于它们的附加方法。下图显示了所有这些可用的方法: Python中的内置字符串函数 在本文中,我们将学习一些最常用的方法。这里需要注意的重要一点是,…