/// <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. python 获取你电脑纯文本文档内容!解决IndentationError: expected an indented block报错!
  2. Yoshua:深度学习AI迈向人类水平的挑战(附PPT下载)
  3. 转载/VMware Workstation环境下的Linux网络设置/适用于无线网络
  4. 创建vue项目+总结使用(跨域问题+vue 创建)
  5. 调制的缺点_什么限制了光模块内调制的性能?
  6. Tuple解决在视图中通过razor获取控制器传递给视图的匿名对象的报错问题
  7. 防止html标签转义
  8. 小米路由器3 变砖 ttl 救砖,刷入padavan
  9. m7405d粉盒清零方法_联想m7605d清零方法
  10. 淘宝SKU组合查询算法实现
  11. python 多线程 代理 爬取 豆果美食app
  12. 最大公约数是啥意思_要求最大公约数是什么含义(如何求最大公约数)
  13. 网吧流媒体服务器系统,网吧视频点播服务器架设完全攻略流媒体服务器 -电脑资料...
  14. 关于Netty中的Recycler对象池
  15. 网站制作从原型图架构到设计开发的具体步骤
  16. 事情往往不是想的那么糟
  17. 图书信息管理系统(一)
  18. 初识ElasticSearch(2) -文档查询之match查询 | 分词器
  19. DOM对象的常用属性
  20. 【学习总结】-Apsara Clouder专项技能认证:实现调用API接口学习总结

热门文章

  1. javascript学习系列(21):数组中的reduceRight法
  2. javascript学习系列(16):数组中的every方法
  3. react(78)--vs打开setting.json
  4. 前端学习(3126):react-hello-react之总结props
  5. 前端学习(3036):vue+element今日头条管理-复习
  6. 前端学习(2972):使用mock假数据
  7. 前端学习(2882):实现视图初始化
  8. [css] 怎样把一个div居中?怎样把一个浮动元素居中?怎样把绝对定位的div居中?
  9. 前端学习(1904)vue之电商管理系统电商系统之修改用户的操作
  10. 前端学习(1523):vue-cli项目目录介绍