zoukankan      html  css  js  c++  java
  • XmlHepler(拿去就能用)

    [系列目录](./XmlCatalog.html)

    前言

    本篇是这个系列的最后一篇。也是本人第一次写系列文章,虽然系列中大部分内容都是参考网络,但是自己都有敲代码验证。
    自己再编写过程中也学习到了很多知识,以前都只是看,看过了也就忘记了,通过编写博客也算是作为自己的一个笔记,方便自己以后查找

     

    XmlHepler

    最后送给大家一个工具内裤(类库),废话不多少,直接上马

    应用程序配置类型枚举

     1 #region 获取节点
     2 
     3         #region 获取指定XPath表达式的节点对象
     4 
     5         /// <summary>
     6         /// 获取指定XPath表达式的节点对象
     7         /// </summary>
     8         /// <param name="xPath">XPath表达式,
     9         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
    10         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
    11         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
    12         /// </param>
    13         public XmlNode GetNode(string xPath)
    14         {
    15             //创建XML的根节点
    16             //CreateXMLElement();
    17 
    18             //返回XPath节点
    19             return _element.SelectSingleNode(xPath);
    20         }
    21 
    22         /// <summary>
    23         /// 获取指定XPath表达式的节点对象
    24         /// </summary>
    25         /// <param name="xPath">XPath表达式,
    26         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
    27         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
    28         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
    29         /// </param>
    30         public XmlNodeList GetNodeList(string xPath)
    31         {
    32             //创建XML的根节点
    33             //CreateXMLElement();
    34 
    35             //返回XPath节点
    36             return _element.SelectNodes(xPath);
    37         }
    38 
    39         #endregion 获取指定XPath表达式的节点对象
    40 
    41         #region 获取指定XPath表达式节点的值
    42 
    43         /// <summary>
    44         /// 获取指定XPath表达式节点的值
    45         /// </summary>
    46         /// <param name="xPath">XPath表达式,
    47         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
    48         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
    49         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
    50         /// </param>
    51         public string GetValue(string xPath)
    52         {
    53             //创建XML的根节点
    54             //CreateXMLElement();
    55 
    56             //返回XPath节点的值
    57             return _element.SelectSingleNode(xPath).InnerText;
    58         }
    59 
    60         #endregion 获取指定XPath表达式节点的值
    61 
    62         #region 获取指定XPath表达式节点的属性值
    63 
    64         /// <summary>
    65         /// 获取指定XPath表达式节点的属性值
    66         /// </summary>
    67         /// <param name="xPath">XPath表达式,
    68         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
    69         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
    70         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
    71         /// </param>
    72         /// <param name="attributeName">属性名</param>
    73         public string GetAttributeValue(string xPath, string attributeName)
    74         {
    75             //创建XML的根节点
    76             //CreateXMLElement();
    77 
    78             //返回XPath节点的属性值
    79             return _element.SelectSingleNode(xPath).Attributes[attributeName].Value;
    80         }
    81 
    82         #endregion 获取指定XPath表达式节点的属性值
    83 
    84         #endregion 获取节点
    View Code

    新增节点

     1  #region 新增节点
     2 
     3         /// <summary>
     4         /// 1. 功能:新增节点。
     5         /// 2. 使用条件:将任意节点插入到当前Xml文件中。
     6         /// </summary>
     7         /// <param name="xmlNode">要插入的Xml节点</param>
     8         public void AppendNode(XmlNode xmlNode)
     9         {
    10             //创建XML的根节点
    11             //CreateXMLElement();
    12 
    13             //导入节点
    14             XmlNode node = _xml.ImportNode(xmlNode, true);
    15 
    16             //将节点插入到根节点下
    17             _element.AppendChild(node);
    18         }
    19 
    20         /// <summary>
    21         /// 1. 功能:新增节点。
    22         /// 2. 使用条件:将任意节点字符串插入到当前Xml文件中。
    23         /// </summary>
    24         /// <param name="name">节点名称</param>
    25         /// <param name="InnerXml">节点内部字符串</param>
    26         public void AppendNode(string name, string InnerXml)
    27         {
    28             //创建XML的根节点
    29             //CreateXMLElement();
    30 
    31             //导入节点
    32             XmlNode node = _xml.CreateElement(name);
    33             node.InnerXml = InnerXml;
    34 
    35             //将节点插入到根节点下
    36             _element.AppendChild(node);
    37         }
    38 
    39         #endregion 新增节点
    View Code

    删除节点

     1  #region 删除节点
     2 
     3         /// <summary>
     4         /// 删除指定XPath表达式的节点
     5         /// </summary>
     6         /// <param name="xPath">XPath表达式,
     7         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
     8         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
     9         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
    10         /// </param>
    11         public void RemoveNode(string xPath)
    12         {
    13             //创建XML的根节点
    14             //CreateXMLElement();
    15 
    16             //获取要删除的节点
    17             XmlNode node = _xml.SelectSingleNode(xPath);
    18 
    19             //删除节点
    20             //_element.RemoveChild(node);
    21             node.ParentNode.RemoveChild(node);
    22         }
    23 
    24         #endregion 删除节点
    View Code

    编辑节点

     1  #region 编辑节点
     2 
     3         /// <summary>
     4         ///  根据指定XPath表达式节点,编辑属性
     5         /// </summary>
     6         /// <param name="xPath">XPath表达式,
     7         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
     8         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
     9         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
    10         /// </param>
    11         /// <param name="dicAttribute">属性字典</param>
    12         public void EditElementAttribute(string xPath, Dictionary<string, string> dicAttribute)
    13         {
    14             XmlElement elmt = null;
    15             //获取要修改的节点
    16             XmlNode node = _xml.SelectSingleNode(xPath);
    17             if (node.NodeType != XmlNodeType.Element)
    18             {
    19                 throw (new Exception("XmlNodeType is Element Can SetAttribute!"));
    20             }
    21             else
    22             {
    23                 elmt = (XmlElement)node;
    24             }
    25             //根据Dictionary设置属性
    26             //遍历字典
    27             foreach (KeyValuePair<string, string> kvp in dicAttribute)
    28             {
    29                 elmt.SetAttribute(kvp.Key, kvp.Value);
    30             }
    31         }
    32 
    33         /// <summary>
    34         ///  根据指定XPath表达式节点修改内部文本
    35         /// </summary>
    36         /// <param name="xPath">XPath表达式,
    37         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
    38         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
    39         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
    40         /// </param>
    41         /// <param name="innerText">内部文本</param>
    42         public void EditNodeText(string xPath, string innerText)
    43         {
    44             //获取要修改的节点
    45             XmlNode node = _xml.SelectSingleNode(xPath);
    46 
    47             node.InnerText = innerText;
    48         }
    49 
    50         /// <summary>
    51         ///  根据指定XPath表达式节点修改内部Xml
    52         /// </summary>
    53         /// <param name="xPath">XPath表达式,
    54         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
    55         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
    56         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
    57         /// </param>
    58         /// <param name="innerText">内部Xml</param>
    59         public void EditNodeXml(string xPath, string innerXml)
    60         {
    61             //获取要修改的节点
    62             XmlNode node = _xml.SelectSingleNode(xPath);
    63 
    64             node.InnerXml = innerXml;
    65         }
    66 
    67         #endregion 编辑节点
    View Code

    全部源码

    XmlHelper源码

    后记


    花了一周左右的时间把这个系列写完,主要都是MaskDown语法编写,发现写起来真是很方便。
    提取透露下下个系列准备写邮件相关

  • 相关阅读:
    Vue.js——60分钟快速入门
    SpringMVC--拦截器的使用
    wex5中集成的mysql数据库 打开时一闪而过 报错
    技术资源集合
    解析xml的4种方法详解
    回调方法介绍之中国好室友篇(Java示例)
    org/springframework/cache/jcache/config/AbstractJCacheConfiguration.class
    maven创建父项目和子项目
    SpringBoot学习之一 Unable to find a single main class from the following candidates
    Spring事务管理5-----声明式事务管理(3)
  • 原文地址:https://www.cnblogs.com/wxc-kingsley/p/Xml-007.html
Copyright © 2011-2022 走看看