c#学习之-xml操作类XmlHelper
2015-06-07 17:18
561 查看
c#学习之-xml操作类XmlHelper
该操作类主要使用XmlDocument方法操作类<p>using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml;</p><p>namespace SSM.Common { public class XmlHelper { #region 对节点操作 /// <summary> /// 增加一个新节点 /// </summary> /// <param name="filePath">xml文件名</param> /// <param name="xPath"></param> /// <param name="xmlNode">新增加的节点</param> /// <returns></returns> public static bool AppendChild(string filePath, string xPath, XmlNode xmlNode) { try { XmlDocument xmldoc = new XmlDocument();//实例化一个xml文件类 xmldoc.Load(filePath);//从xPath路径中加载一个xml文件 XmlNode xn = xmldoc.SelectSingleNode(xPath);//查找匹配第一个xml节点 XmlNode n = xmldoc.ImportNode(xmlNode, true);//把节点导入新节点 xn.AppendChild(n); xmldoc.Save(filePath); } catch (Exception) { return false; } return true; } /// <summary> /// 删除指定节点下所有的子节点 /// </summary> /// <param name="filePath"></param> /// <param name="xPath"></param> /// <returns></returns> public static bool DeleteAllChild(string filePath, string xPath) { try { XmlDocument xmldoc = new XmlDocument();//实例化一个xml文件类 XmlElement root = xmldoc.DocumentElement; xmldoc.Load(filePath);//从xPath路径中加载一个xml文件 XmlNode xn = xmldoc.SelectSingleNode(xPath);//查找匹配第一个xml节点 xn.RemoveAll(); xmldoc.Save(filePath); } catch (Exception) {</p><p> return false; } return true; } /// <summary> /// 移除指定节点的子节点 /// </summary> /// <param name="filePath">xml文件名</param> /// <param name="xPath">被删除节点的父节点xPath路径</param> /// <param name="xPathChi">被删除节点的的xPath路径</param> /// <returns></returns> public static bool DeleteChild(string filePath, string xPath, string xPathChi) { try { XmlDocument xmldoc = new XmlDocument();//实例化一个xml文件类 XmlElement root = xmldoc.DocumentElement; xmldoc.Load(filePath);//从xPath路径中加载一个xml文件 XmlNode xn = xmldoc.SelectSingleNode(xPath);//查找匹配第一个xml节点 XmlNode n = xmldoc.SelectSingleNode(xPathChi);//查找匹配xml子节点 xn.RemoveChild(n); xmldoc.Save(filePath); } catch (Exception) {</p><p> return false; } return true; } #endregion /// <summary> /// 获取指定路径节点中所有子节点的值 /// </summary> /// <param name="filePath"></param> /// <param name="xPath"></param> /// <returns></returns> public static List<string> GetListValues(string filePath, string xPath) { List<string> list = new List<string>(); try { XmlDocument xmldoc = new XmlDocument();//实例化一个xml文件类 xmldoc.Load(filePath); XmlNode xn = xmldoc.SelectSingleNode(xPath); XmlElement newNode = (XmlElement)xn;//要读取的节点转换为元素 foreach (XmlNode tempNode in newNode) { XmlNode Node = tempNode.ChildNodes[0]; string nodeName = Node.InnerText;//取子节点的值 string u = nodeName; list.Add(u); } } catch (Exception) {</p><p> return null; } return list; } /// <summary> /// 获取指定节点的指定属性 /// </summary> /// <param name="filePath"></param> /// <param name="xPath"></param> /// <param name="attName">属性集合</param> /// <returns></returns> public static List<string> GetListAttribute(string filePath, string xPath,params string[] attName) { List<string> list = new List<string>(); try { XmlDocument xmldoc = new XmlDocument();//实例化一个xml文件类 xmldoc.Load(filePath); XmlNode xn = xmldoc.SelectSingleNode(xPath); XmlElement newNode = (XmlElement)xn;//要读取的节点转换为元素 for (int i = 0; i < attName.Length; i++) { string stratt = newNode.GetAttribute(attName[i]); list.Add(stratt); } } catch (Exception) { return null; } return list; } /// <summary> /// 给节点增加(修改)属性 /// </summary> /// <param name="filePath"></param> /// <param name="xPath"></param> /// <param name="attName">string</param> /// <param name="attValue">string</param> /// <returns></returns> public static bool UpdateAttribute(string filePath, string xPath,string attName, string attValue) { try { XmlDocument xmldoc = new XmlDocument();//实例化xml文件 xmldoc.Load(filePath);//根据路径加载xml文件 XmlNode xn = xmldoc.SelectSingleNode(xPath);//查找一个xml节点 XmlAttribute xa = xmldoc.CreateAttribute(attName); xa.InnerText = attValue; xn.Attributes.Append(xa); xmldoc.Save(filePath); } catch (Exception) {</p><p> return false; } return true; } /// <summary> /// 删除指定名称的属性 /// </summary> /// <param name="filePath">& 4000 lt;/param> /// <param name="attName">节点名称</param> /// <returns></returns> public static bool DeleteAttribute(string filePath,string attName) { try { XmlDocument doc = new XmlDocument(); doc.Load(filePath); XmlElement root = doc.DocumentElement;//获取根节点 XmlNodeList nodelist = root.ChildNodes;//获取所有节点列表 XmlNode node = null; foreach (XmlNode tempNode in nodelist) { if (tempNode.NodeType == XmlNodeType.Element) { if (tempNode.ChildNodes[0].InnerText == attName) { node = tempNode; break; } } } if (node != null) { root.RemoveChild(node); doc.Save(filePath); } } catch (Exception) {</p><p> return false; } return true; } /// <summary> /// 更新(增加 修改)节点内容 /// </summary> /// <param name="filePath"></param> /// <param name="xPath"></param> /// <param name="value"></param> /// <returns></returns> public static bool UpateNodeInnerText(string filePath, string xPath, string value) { try { XmlDocument doc = new XmlDocument(); doc.Load(filePath); XmlNode xn = doc.SelectSingleNode(xPath);//根据路径选择节点 XmlElement xe = (XmlElement)xn; xe.InnerText = value; doc.Save(filePath); } catch (Exception) {</p><p> return false; } return true; } } }</p>
对于该类的使用 可以根据注释中的参数介绍使用
下面简单的举例使用一下 对于xPath的学习 本文不讨论 文中xPath的使用 仅为说明XMLHelper的使用举例
xml文件
<?xml version="1.0" encoding="utf-8" ?> <root>
</root>
调用方法
<pre class="csharp" name="code"> XmlDocument xml = new XmlDocument(); XmlElement elem = xml.CreateElement("tset"); XmlHelper.AppendChild("xmltest0606.xml","//root",elem );
执行结果
<root> <tset /> </root>
调用方法
<pre class="csharp" name="code"> XmlDocument xml = new XmlDocument(); //新增一个测试节点 XmlElement elem = xml.CreateElement("user1"); XmlHelper.AppendChild("xmltest0606.xml","//root",elem ); //在测试节点下新增name节点 XmlElement elemname = xml.CreateElement("name"); XmlHelper.AppendChild("xmltest0606.xml", "//user1", elemname); //在测试节点下新增age节点 XmlElement elemage = xml.CreateElement("age"); XmlHelper.AppendChild("xmltest0606.xml", "//user1", elemage); //对节点赋值 XmlHelper.UpateNodeInnerText("xmltest0606.xml", "//name", "Jack"); XmlHelper.UpateNodeInnerText("xmltest0606.xml", "//age", "29");
执行结果
<pre class="html" name="code"><root> <tset /> <user1> <name>Jack</name> <age>29</age> </user1> </root>
调用方法
<pre class="csharp" name="code"> XmlHelper.UpdateAttribute("xmltest0606.xml", "//user1", "id", "1001");
执行结果
<root> <tset /> <user1 id="1001"> <name>Jack</name> <age>29</age> </user1> </root>
其他方法类似于以上调用方法 如果有时间会在继续更新其他的方法的操作
如有错误 希望大家批评指出 不甚感激
相关文章推荐
- C#中Winform程序调用WebService方法
- C#之玩转反射
- C#委托的介绍(delegate、Action、Func、predicate)
- C#中正则表达式的使用
- C#中Dictionary的用法及用途
- AE+C#开发问题之四——The Field type is invalid or unsupported for the operation. [Override]
- C#作业连接
- Lambda 表达式(C# 编程指南)
- 复习c#
- => 运算符(C# 参考)
- 基于C#的超市收银管理系统
- C#高级编程第四天
- RDIFramework.NET V2.9版本 WinFom部分新增与修正的功能
- C#操作XML
- C#将DataTable转化为List<T>
- C#.NET中数组、ArrayList和List三者的区别
- C#基础-----基本了解
- C#高级编程第三天
- C#设计模式(20)——策略者模式(Stragety Pattern)
- c#读取通达信历史数据的方法