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语法编写,发现写起来真是很方便。
提取透露下下个系列准备写邮件相关

原文地址:https://www.cnblogs.com/wxc-kingsley/p/Xml-007.html