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
XML文件读取工具类相关推荐
- android文件读取工具类,Android 下读取Assets Properties操作封装工具类
Android 下读取Assets Properties操作封装工具类 发布时间:2018-06-03作者:laosun阅读(2081) 为了方便使用,首先创建BaseApplication类,如下所 ...
- java properties文件 安全_java 数据库读取工具类(读取config.properties配置文件)[包含线程安全] | 学步园...
java 数据库读取工具类(读取config.properties配置文件)[包含线程安全] 数据库读取工具类 package com.db; import java.sql.Connection; ...
- C#读取XML文件的基类实现
刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node ...
- XMLReader—一个可以读取XML文件的java类
在我的博文java ArrayList代替数组中有个XMLReader类,这是一个可以读取XML文件的java类,它的实现过程是怎样的呢?接下来让我们看看XMLReader的实现过程: 首先你要下载一 ...
- xml文件的书写及读取books.xml文件生成Book类
books.xml文件的书写: <?xml version="1.0" encoding="UTF-8" ?> <!-- <?xml v ...
- java操作XML文件--读取内容
先把问题贴出来:编写一个可以解析xml及修改xml内容的工具类 由于我以前做过Android应用程序开发,之前也解析过xml文件,所以,这道题不是很难,这篇文章我先解决第一个问 ...
- 基于POI的读写Excel文件的工具类
依赖的jar包: import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStrea ...
- 好用的对象转xml、xml转对象工具类-支持集合嵌套转换(Java实现)
好用的对象转xml.xml转对象工具类-支持集合嵌套转换(Java实现) 网上找了很多转换工具,对于自己的业务都不是很合适,所以总结了一下网上的方案,最终定下来是这样子的,主要使用dom4j做操作 m ...
- jdom 读取xml_JDOM分析器–将XML文件读取为Java对象
jdom 读取xml JDOM parser provides us a great Java XML API to read, edit and write XML documents easily ...
最新文章
- 就想写个爬虫,我到底要学多少东西啊?
- android万年历有什么作用,基于android的万年历农历怎么算
- 前端学习(689):for循环执行相同代码
- audio 上一首 下一首 自定义样式_被 iPhone 吹爆的最香功能,安卓也终于安排上了...
- IBatisNet初步体验
- LPWAN——Sigfox实战经验介绍
- hbase--索引概念(含二级索引)
- 深度学习中如何选择一款合适的GPU卡的一些经验和建议分享
- vs2019编译的程序在win7环境上运行失败
- 带你深入浅出学STM32
- 解决Pycharm中下载不了sklearn问题
- (2019春)软件构造:雨课堂试卷(第3章)
- INS 、AHRS、VRU、IMU的区别与联系
- 最常用的三角函数值和三角变形公式
- 搜索优化—如何在Google搜索引擎上排名靠前Google左侧排名
- HTML学习笔记——列表标签
- 手动编译源代码安装GR GSM
- 大数据分析案例:应用系统负载分析与磁盘容量预测
- mysql中exists用法
- 【必读】C语言基础知识大全
热门文章
- VMware 提示”此虚拟机被配置为64位操作系统,然而,64位操作无法进行”
- 前端学习(3067):vue+element今日头条管理-element里面的image组件
- [js] 说说你对JS中暂性死区的理解,它有什么运用场景?
- 前端学习(2777):组件之间的通讯方式
- 工作92:500错误
- 工作总结17:组件封装思想
- 前端学习(2362):上拉加载
- 前端学习(2308):react之子传父
- “约见”面试官系列之常见面试题第二十八篇之vue中的混合(minix)实例理解
- 前端学习(2036)vue之电商管理系统电商系统之将本地的文件合并