前言
本篇是这个系列的最后一篇。也是本人第一次写系列文章,虽然系列中大部分内容都是参考网络,但是自己都有敲代码验证。
自己再编写过程中也学习到了很多知识,以前都只是看,看过了也就忘记了,通过编写博客也算是作为自己的一个笔记,方便自己以后查找
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 获取节点
新增节点
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 新增节点
删除节点
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 删除节点
编辑节点
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 编辑节点
全部源码
后记
花了一周左右的时间把这个系列写完,主要都是MaskDown语法编写,发现写起来真是很方便。
提取透露下下个系列准备写邮件相关