/// <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文件读取工具类相关推荐

  1. android文件读取工具类,Android 下读取Assets Properties操作封装工具类

    Android 下读取Assets Properties操作封装工具类 发布时间:2018-06-03作者:laosun阅读(2081) 为了方便使用,首先创建BaseApplication类,如下所 ...

  2. java properties文件 安全_java 数据库读取工具类(读取config.properties配置文件)[包含线程安全] | 学步园...

    java 数据库读取工具类(读取config.properties配置文件)[包含线程安全] 数据库读取工具类 package com.db; import java.sql.Connection; ...

  3. C#读取XML文件的基类实现

    刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node ...

  4. XMLReader—一个可以读取XML文件的java类

    在我的博文java ArrayList代替数组中有个XMLReader类,这是一个可以读取XML文件的java类,它的实现过程是怎样的呢?接下来让我们看看XMLReader的实现过程: 首先你要下载一 ...

  5. xml文件的书写及读取books.xml文件生成Book类

    books.xml文件的书写: <?xml version="1.0" encoding="UTF-8" ?> <!-- <?xml v ...

  6. java操作XML文件--读取内容

          先把问题贴出来:编写一个可以解析xml及修改xml内容的工具类       由于我以前做过Android应用程序开发,之前也解析过xml文件,所以,这道题不是很难,这篇文章我先解决第一个问 ...

  7. 基于POI的读写Excel文件的工具类

    依赖的jar包: import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStrea ...

  8. 好用的对象转xml、xml转对象工具类-支持集合嵌套转换(Java实现)

    好用的对象转xml.xml转对象工具类-支持集合嵌套转换(Java实现) 网上找了很多转换工具,对于自己的业务都不是很合适,所以总结了一下网上的方案,最终定下来是这样子的,主要使用dom4j做操作 m ...

  9. jdom 读取xml_JDOM分析器–将XML文件读取为Java对象

    jdom 读取xml JDOM parser provides us a great Java XML API to read, edit and write XML documents easily ...

最新文章

  1. 就想写个爬虫,我到底要学多少东西啊?
  2. android万年历有什么作用,基于android的万年历农历怎么算
  3. 前端学习(689):for循环执行相同代码
  4. audio 上一首 下一首 自定义样式_被 iPhone 吹爆的最香功能,安卓也终于安排上了...
  5. IBatisNet初步体验
  6. LPWAN——Sigfox实战经验介绍
  7. hbase--索引概念(含二级索引)
  8. 深度学习中如何选择一款合适的GPU卡的一些经验和建议分享
  9. vs2019编译的程序在win7环境上运行失败
  10. 带你深入浅出学STM32
  11. 解决Pycharm中下载不了sklearn问题
  12. (2019春)软件构造:雨课堂试卷(第3章)
  13. INS 、AHRS、VRU、IMU的区别与联系
  14. 最常用的三角函数值和三角变形公式
  15. 搜索优化—如何在Google搜索引擎上排名靠前Google左侧排名
  16. HTML学习笔记——列表标签
  17. 手动编译源代码安装GR GSM
  18. 大数据分析案例:应用系统负载分析与磁盘容量预测
  19. mysql中exists用法
  20. 【必读】C语言基础知识大全

热门文章

  1. VMware 提示”此虚拟机被配置为64位操作系统,然而,64位操作无法进行”
  2. 前端学习(3067):vue+element今日头条管理-element里面的image组件
  3. [js] 说说你对JS中暂性死区的理解,它有什么运用场景?
  4. 前端学习(2777):组件之间的通讯方式
  5. 工作92:500错误
  6. 工作总结17:组件封装思想
  7. 前端学习(2362):上拉加载
  8. 前端学习(2308):react之子传父
  9. “约见”面试官系列之常见面试题第二十八篇之vue中的混合(minix)实例理解
  10. 前端学习(2036)vue之电商管理系统电商系统之将本地的文件合并