using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
//XML存储类
namespace ryCommon
{
class clsStorage
{
private XmlDocument xmlDoc = new XmlDocument();
private XmlNode xmlNode;
private XmlElement element;
//private System.Xml.XmlNodeList NodeList2;
public clsStorage()
{
string strXMLText = "";
xmlDoc.LoadXml(strXMLText);
}
public clsStorage(string XMLText) //从XML文本中加载数据
{
try
{
xmlDoc.LoadXml(XMLText);
}
catch
{
xmlDoc.LoadXml("");
}
}
#region 从指定的XML文本中加载
///
/// 从指定的XML文本中加载
///
/// XML文本
/// 如为1,表示加载成功,为0为失败
public int LoadFromXMLText(string XMLText)
{
try
{
xmlDoc.LoadXml(XMLText);
return 1;
}
catch
{
xmlDoc.LoadXml("");
return 0;
}
}
#endregion
#region 加载空的XML文本
///
/// 载入空的XML文档
///
/// XML文本
/// 如为1,表示加载成功,为0为失败
public int LoadEmptyXMLText()
{
try
{
xmlDoc.LoadXml("");
return 1;
}
catch
{
return 0;
}
}
#endregion
#region 从指定的文件中加载
///
/// 从指定的文件中加载
///
/// XML文件路径
/// 如为1,表示加载成功,为0为失败
public int LoadFromFile(string FilePath)
{
try
{
xmlDoc.Load(FilePath);
return 1;
}
catch
{
xmlDoc.LoadXml("");
return 0;
}
}
#endregion
#region 保存到指定文件中
///
/// 保存到指定文件中
///
/// 文件路径
/// 如为1,表示保存成功,为0为失败
public int SaveToFile(string sFilePath)
{
try
{
xmlDoc.Save(sFilePath);
return 1;
}
catch
{
return 0;
}
}
#endregion
#region 判断节点是否存在
///
/// 判断节点是否存在
///
/// 属性名
/// 属性值
/// 返回1,表示存在,其它表示不存在
public int HaveNode(string AttrName, string sValue)
{
try
{
//根据指定路径获取节点
XmlNode xmlNode2 = null;
xmlNode2 = xmlDoc.SelectSingleNode("root/list[@" + AttrName + "='" + sValue + "']");
if (xmlNode2 == null)
{
return 0;
}
else
{
return 1;
}
}
catch
{
return 0;
}
}
#endregion
#region 定位节点
///
/// 定位节点
///
/// 属性名
/// 属性值
/// 返回第一个符合要求的结果
public int SelectNode(string AttrName,string sValue)
{
try
{
//根据指定路径获取节点
element = null;
xmlNode = xmlDoc.SelectSingleNode("root/list[@"+AttrName+"='" + sValue + "']");
element = (XmlElement)xmlNode;
if (element == null)
{
return 0;
}
else
{
return 1;
}
}
catch
{
return 0;
}
}
#endregion
#region 定位节点2
///
/// 定位节点,如果找不到节点,就新建一个节点
///
/// 属性名
/// 属性值
/// 返回第一个符合要求的结果
public int SelectNode2(string AttrName, string sValue)
{
try
{
//根据指定路径获取节点
element = null;
xmlNode = xmlDoc.SelectSingleNode("root/list[@" + AttrName + "='" + sValue + "']");
element = (XmlElement)xmlNode;
if (element == null)
{
return AddNode2(AttrName, sValue);
}
else
{
return 1;
}
}
catch
{
return 0;
}
}
#endregion
#region 定位节点3
///
/// 根据用户的节点定位节点,输入节点时,一定要注意节点是属于类内部的,否则可能出错。
///
/// 返回第一个符合要求的结果
public int SelectNode3(XmlNode m_xmlNode)
{
try
{
//根据指定路径获取节点
element = null;
xmlNode = m_xmlNode;
element = (XmlElement)xmlNode;
if (element == null)
{
return 0;
}
else
{
return 1;
}
}
catch
{
return 0;
}
}
#endregion
#region 设置节点值
///
/// 设置节点值
///
/// 属性名
/// 属性值
/// 如为1,表示加载成功,为0为失败
public int SetAttrValue(string strName, string strValue)
{
try
{ //设置节点值
element.SetAttribute(strName, strValue);
return 1;
}
catch
{
return 0;
}
}
#endregion
#region 设置节点值(布尔类型)
///
/// 设置节点值
///
/// 属性名
/// 属性值
/// 如为1,表示加载成功,为0为失败
public int SetAttrValue(string strName, bool strValue)
{
try
{ //设置节点值
string m_value="0";
if (strValue == true) { m_value = "1"; }
element.SetAttribute(strName, m_value);
return 1;
}
catch
{
return 0;
}
}
#endregion
#region 设置节点值(int类型)
///
/// 设置节点值
///
/// 属性名
/// 属性值
/// 如为1,表示加载成功,为0为失败
public int SetAttrValue(string strName, int strValue)
{
try
{ //设置节点值
element.SetAttribute(strName, strValue.ToString());
return 1;
}
catch
{
return 0;
}
}
#endregion
#region 设置节点值(日期类型)
///
/// 设置节点值
///
/// 属性名
/// 属性值
/// 如为1,表示加载成功,为0为失败
public int SetAttrValue(string strName, DateTime strValue)
{
try
{ //设置节点值
element.SetAttribute(strName, strValue.ToString());
return 1;
}
catch
{
return 0;
}
}
#endregion
#region 读取指定节点的值
///
/// 读取指定节点的值
///
///
///
public string GetAttrValue(string strNode)
{
try
{
//根据路径获取节点
return element.GetAttribute(strNode);
}
catch
{
return "";
}
}
#endregion
#region 读取指定节点的值2
///
/// 读取指定节点的值
///
///
///
public string GetAttrValue(string strNode,string defValue)
{
try
{
//根据路径获取节点
string strTemp=element.GetAttribute(strNode);
if (strTemp == "")
{
return defValue;
}
else
{
return strTemp;
}
}
catch
{
return defValue;
}
}
#endregion
#region 读取指定节点的值3
///
/// 读取指定节点的值
///
///
///
public int GetAttrValueByInt(string strNode, int defValue)
{
try
{
//根据路径获取节点
string strTemp = element.GetAttribute(strNode);
return Convert.ToInt32(strTemp);
}
catch
{
return defValue;
}
}
#endregion
#region 读取指定节点的值4
///
/// 读取指定节点的值
///
///
///
public decimal GetAttrValueByDecimal(string strNode, decimal defValue)
{
try
{
//根据路径获取节点
string strTemp = element.GetAttribute(strNode);
return Convert.ToDecimal(strTemp);
}
catch
{
return defValue;
}
}
#endregion
#region 读取指定节点的值5(布尔值)
///
/// 读取指定节点的值
///
///
///
public bool GetAttrValueByBool(string strNode, bool defValue)
{
try
{
//根据路径获取节点
string strTemp = element.GetAttribute(strNode);
if (strTemp == "1")
{
return true;
}
else
{
return false;
}
}
catch
{
return defValue;
}
}
#endregion
#region 读取指定节点的值6(日期值)
///
/// 读取指定节点的值
///
///
///
public DateTime GetAttrValueByDate(string strNode, DateTime defValue)
{
try
{
//根据路径获取节点
string strTemp = element.GetAttribute(strNode);
return Convert.ToDateTime(strTemp);
}
catch
{
return defValue;
}
}
#endregion
///
/// 获取XML文件的根元素
///
public XmlNode GetXmlRoot()
{
return xmlDoc.DocumentElement;
}
#region 获取所有列表
///
/// 获取所有列表
///
/// 如为1,表示获取成功,为0为失败
public XmlNodeList GetList()
{
try
{
return xmlDoc.DocumentElement.SelectNodes("child::list");
}
catch
{
return null;
}
}
#endregion
#region 新增节点
///
/// 新增节点
///
///
///
///
public int AddNode(string strName, string strValue)
{
try
{
XmlNode xmlNode2 = xmlDoc.SelectSingleNode("root");
XmlNode childXmlNode = xmlDoc.CreateElement("list");
xmlNode2.AppendChild(childXmlNode);
XmlElement element2 = (XmlElement)childXmlNode;
element2.SetAttribute(strName, strValue);
return 1;
}
catch
{
return 0;
}
}
#endregion
#region 新增节点并定位到新节点
///
/// 新增节点并定位到新节点
///
///
///
///
public int AddNode2(string strName, string strValue)
{
try
{
XmlNode xmlNode2 = xmlDoc.SelectSingleNode("root");
xmlNode = xmlDoc.CreateElement("list");
xmlNode2.AppendChild(xmlNode);
element = (XmlElement)xmlNode;
element.SetAttribute(strName, strValue);
return 1;
}
catch
{
return 0;
}
}
#endregion
#region 新增节点并定位到新节点
///
/// 在指定节点前新增节点并定位到新节点
///
///
///
///
public int AddNodeBefore(string strName, string strValue, XmlNode xn)
{
try
{
XmlNode xmlNode2 = xmlDoc.SelectSingleNode("root");
xmlNode = xmlDoc.CreateElement("list");
xmlNode2.InsertBefore(xmlNode, xn);
element = (XmlElement)xmlNode;
element.SetAttribute(strName, strValue);
return 1;
}
catch
{
return 0;
}
}
#endregion
public XmlNode GetNowXMLNode()
{
return xmlNode;
}
#region 删除节点
///
/// 删除节点
///
///
public int DeleteNode()
{
try
{
//element.RemoveAll();
GetXmlRoot().RemoveChild(xmlNode);
xmlNode = null;
element = null;
return 1;
}
catch
{
return 0;
}
}
#endregion
#region 获取XML文本
///
/// 获取XML文本
///
///
public string GetXMLText()
{
return xmlDoc.OuterXml;
}
#endregion
#region 获取XML文本
///
/// 获取文本
///
///
public string GetText()
{
return xmlDoc.ToString(); ;
}
#endregion
}
}