📄 xmlaccess.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 + -