⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlaccess.cs

📁 人力资源管理系统
💻 CS
字号:
using System;
using System.Xml;
using System.Data;
using System.IO;
using System.Collections;
using COAdmin.COMMON ;

namespace COAdmin.DAL
{
	/// <summary>
	/// XmlAccess 的摘要说明。
	/// </summary>
	public class XmlAccess
	{
		public XmlAccess()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}

		public XmlDocument xDoc =null;        //文档
		public XmlElement  root=null;         //根节点


		/// <summary>
		/// 从指定路径load XML文档
		/// </summary>
		/// <param name="path"></param>
		/// <returns></returns>
		public bool Load(string path)
		{
			try
			{
				xDoc=new XmlDocument();
				xDoc.Load(path);
				root=xDoc.DocumentElement;
				return true;
			}
			catch
			{
				return false;
			}
		}

		/// <summary>
		/// 获取节点数
		/// </summary>
		/// <param name="xpath">节点路径</param>
		/// <returns>节点数</returns>
		public int GetXmlNodeCount(string xpath)
		{
			if(root==null) return 0;

			XmlNode xe=root;
			XmlNodeList xnl=xe.SelectNodes(xpath);
			if (xnl==null)
				return 0;
			else
				return xnl.Count;
		}

		/// <summary>
		/// 查询节点是否存在
		/// </summary>
		/// <param name="path">节点路径</param>
		/// <returns>true:存在 false:不存在</returns>
		public bool FindNode(string path)
		{			
			XmlNode xn = xDoc.SelectSingleNode(path) ;
			if (xn==null)
				return false;
			else
				return true;
		}

		/// <summary>
		/// 根据路径获取单个节点
		/// </summary>
		/// <param name="path">路径</param>
		/// <returns>返回节点</returns>
		public XmlNode GetSingleNode(string path)
		{
			return xDoc.SelectSingleNode(path) ;
		}

		/// <summary>
		/// 根据路径获取节点组
		/// </summary>
		/// <param name="path">路径</param>
		/// <returns></returns>
		public XmlNodeList GetNodes(string path)
		{
			return xDoc.SelectNodes(path) ;
		}
	

		/// <summary>
		/// 创建XML文档
		/// </summary>
		/// <param name="rid">根节点名</param>
		public void CreateXmlFile(string rid)
		{
			xDoc=new XmlDocument();                //创建文件
			XmlDeclaration xmldecl;
			xmldecl = xDoc.CreateXmlDeclaration("1.0",null,null);
			xmldecl.Encoding="GB2312";             //字符集为国标以支持汉字

			root=xDoc.CreateElement(rid);         //创建根节点
			xDoc.AppendChild(root);
			xDoc.InsertBefore(xmldecl, root);
		}


		/// <summary>
		/// 添加节点
		/// </summary>
		/// <param name="path">新节点的添加路径</param>
		/// <param name="name">节点名称</param>
		/// <param name="attName">节点属性的名称</param>
		/// <param name="attVal">节点属性值</param>
		/// <returns>0:成功,-1:失败</returns>
		public int AddNode(string path,string name,string[] attName,string[] attVal)
		{
			int ret = 0 ;

			//如果参数名称和参数值数组长度不等,返回失败
			if(attName.Length != attVal.Length)
			{
				//写Log,返回
				Trace.Write("AddNode","Error","参数个数和参数值个数不匹配,Path="+path+",Name="+name,0) ;		
				ret = -1 ;
				return ret ;
			}
			//获取父节点
			XmlNode pNode = xDoc.SelectSingleNode( path );
			//获取父节点失败
			if(pNode == null)
			{
				//写Log,返回
				Trace.Write("AddNode","Error","获取父节点失败,Path="+path+",Name="+name,0) ;	
				ret = -1 ;
				return ret ;
			}

			//创建节点
			XmlNode nod = xDoc.CreateElement(name) ;
			//逐个创建节点属性
			for(int i=0;i<attName.Length;i++)
			{
				NodeAttribute(nod,attName[i],attVal[i]) ;
			}
			//添加节点
			pNode.AppendChild(nod) ;

			//成功,写Log
			Trace.Write("AddNode","Info","添加新节点成功,Path="+path+",Name="+name,5) ;

			return ret ;
		}

		/// <summary>
		/// 创建节点属性
		/// </summary>
		/// <param name="n">节点</param>
		/// <param name="id">属性ID</param>
		/// <param name="val">属性值</param>
		public void NodeAttribute(XmlNode n,string id,string val)
		{
			XmlElement xEl = (XmlElement)n ;
				
			XmlAttribute attr = xDoc.CreateAttribute(id);
			attr.Value = val ;
			xEl.SetAttributeNode(attr);
						
		}

		/// <summary>
		/// 修改节点属性
		/// </summary>
		/// <param name="path"></param>
		/// <param name="attName"></param>
		/// <param name="attVal"></param>
		/// <returns></returns>
		public int ModifyAttribute(string path,string[] attName,string[] attVal)
		{
			int ret = 0 ;

			//如果参数名称和参数值数组长度不等,返回失败
			if(attName.Length != attVal.Length)
			{
				//写Log,返回
				Trace.Write("Modify","Err","参数个数和参数值个数不匹配,Path="+path,0) ;		
				ret = -1 ;
				return ret ;
			}
			//获取节点
			XmlNode nod = xDoc.SelectSingleNode( path );
			if(nod == null)
			{
				//写Log,返回
				Trace.Write("Modify","Err","获取节点失败,Path="+path,0) ;	
				ret = -1 ;
				return ret ;
			}

			//逐个修改节点属性
			for(int i=0;i<attName.Length;i++)
			{
				nod.Attributes[attName[i]].Value = attVal[i] ;
			}

			//写Log,返回
			Trace.Write("Modify","Info","修改节点成功,Path="+path,5) ;		

			return ret ;
		}

		/// <summary>
		/// 删除节点
		/// </summary>
		/// <param name="path">路径</param>
		/// <returns></returns>
		public int DeleteNode(string path)
		{
			int ret = 0 ;

			//获取节点
			XmlNode node = xDoc.SelectSingleNode( path );
			if(node == null)
			{
				//写Log,返回
				Trace.Write("Delete","Err","获取节点失败,Path="+path,0) ;	
				ret = -1 ;
				return ret ;
			}
			//获取父节点
			XmlNode pNode = node.ParentNode ;
			if(pNode != null)
			{
				pNode.RemoveChild(node) ;
			}

			Trace.Write("Delete","Info","删除节点成功,Path="+path,2) ;

			return ret ;
		}		
		
		/// <summary>
		/// 保存Xml文
		/// </summary>
		/// <param name="path">保存路径</param>
		public void SaveXml(string path)
		{			
			string dir=Path.GetDirectoryName(path);
			string file=Path.GetFileName(path);
			if(dir=="")
			{
				dir = COAdminGlobals.ConfigFilePath ;
			}
			

			if(xDoc==null) return;
			xDoc.Save(path);
		}	

		/// <summary>
		/// 获取节点的所有子节点
		/// </summary>
		/// <param name="path">节点路径</param>
		/// <returns>子节点</returns>
		public XmlNodeList GetChildNodes(string path)
		{
			XmlNodeList list = null ;

			//获取父节点
			XmlNode node = xDoc.SelectSingleNode( path );
			if(node == null)
			{
				//写Log,返回
				Trace.Write("GetChild","Error","获取节点失败,Path="+path,0) ;					
				return list ;
			}

			//获取所有子节点
			list = node.ChildNodes ;

			return list ;			
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -