RaUI/Source/ryUpdate/UpdateEdit/Backup1/clsStorage.cs
2020-11-28 15:03:57 +08:00

583 lines
17 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 = "<root></root>";
xmlDoc.LoadXml(strXMLText);
}
public clsStorage(string XMLText) //从XML文本中加载数据
{
try
{
xmlDoc.LoadXml(XMLText);
}
catch
{
xmlDoc.LoadXml("<root></root>");
}
}
#region XML文本中加载
/// <summary>
/// 从指定的XML文本中加载
/// </summary>
/// <param name="XMLText">XML文本</param>
/// <returns>如为1表示加载成功为0为失败</returns>
public int LoadFromXMLText(string XMLText)
{
try
{
xmlDoc.LoadXml(XMLText);
return 1;
}
catch
{
xmlDoc.LoadXml("<root></root>");
return 0;
}
}
#endregion
#region XML文本
/// <summary>
/// 载入空的XML文档
/// </summary>
/// <param name="XMLText">XML文本</param>
/// <returns>如为1表示加载成功为0为失败</returns>
public int LoadEmptyXMLText()
{
try
{
xmlDoc.LoadXml("<root></root>");
return 1;
}
catch
{
return 0;
}
}
#endregion
#region
/// <summary>
/// 从指定的文件中加载
/// </summary>
/// <param name="FilePath">XML文件路径</param>
/// <returns>如为1表示加载成功为0为失败</returns>
public int LoadFromFile(string FilePath)
{
try
{
xmlDoc.Load(FilePath);
return 1;
}
catch
{
xmlDoc.LoadXml("<root></root>");
return 0;
}
}
#endregion
#region
/// <summary>
/// 保存到指定文件中
/// </summary>
/// <param name="sFilePath">文件路径</param>
/// <returns>如为1表示保存成功为0为失败</returns>
public int SaveToFile(string sFilePath)
{
try
{
xmlDoc.Save(sFilePath);
return 1;
}
catch
{
return 0;
}
}
#endregion
#region
/// <summary>
/// 判断节点是否存在
/// </summary>
/// <param name="AttrName">属性名</param>
/// <param name="sValue">属性值</param>
/// <returns>返回1表示存在其它表示不存在</returns>
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
/// <summary>
/// 定位节点
/// </summary>
/// <param name="AttrName">属性名</param>
/// <param name="sValue">属性值</param>
/// <returns>返回第一个符合要求的结果</returns>
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
/// <summary>
/// 定位节点,如果找不到节点,就新建一个节点
/// </summary>
/// <param name="AttrName">属性名</param>
/// <param name="sValue">属性值</param>
/// <returns>返回第一个符合要求的结果</returns>
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
/// <summary>
/// 根据用户的节点定位节点,输入节点时,一定要注意节点是属于类内部的,否则可能出错。
/// </summary>
/// <returns>返回第一个符合要求的结果</returns>
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
/// <summary>
/// 设置节点值
/// </summary>
/// <param name="strName">属性名</param>
/// <param name="strValue">属性值</param>
/// <returns>如为1表示加载成功为0为失败</returns>
public int SetAttrValue(string strName, string strValue)
{
try
{ //设置节点值
element.SetAttribute(strName, strValue);
return 1;
}
catch
{
return 0;
}
}
#endregion
#region ()
/// <summary>
/// 设置节点值
/// </summary>
/// <param name="strName">属性名</param>
/// <param name="strValue">属性值</param>
/// <returns>如为1表示加载成功为0为失败</returns>
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类型)
/// <summary>
/// 设置节点值
/// </summary>
/// <param name="strName">属性名</param>
/// <param name="strValue">属性值</param>
/// <returns>如为1表示加载成功为0为失败</returns>
public int SetAttrValue(string strName, int strValue)
{
try
{ //设置节点值
element.SetAttribute(strName, strValue.ToString());
return 1;
}
catch
{
return 0;
}
}
#endregion
#region ()
/// <summary>
/// 设置节点值
/// </summary>
/// <param name="strName">属性名</param>
/// <param name="strValue">属性值</param>
/// <returns>如为1表示加载成功为0为失败</returns>
public int SetAttrValue(string strName, DateTime strValue)
{
try
{ //设置节点值
element.SetAttribute(strName, strValue.ToString());
return 1;
}
catch
{
return 0;
}
}
#endregion
#region
/// <summary>
/// 读取指定节点的值
/// </summary>
/// <param name="strNode"></param>
/// <returns></returns>
public string GetAttrValue(string strNode)
{
try
{
//根据路径获取节点
return element.GetAttribute(strNode);
}
catch
{
return "";
}
}
#endregion
#region 2
/// <summary>
/// 读取指定节点的值
/// </summary>
/// <param name="strNode"></param>
/// <returns></returns>
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
/// <summary>
/// 读取指定节点的值
/// </summary>
/// <param name="strNode"></param>
/// <returns></returns>
public int GetAttrValueByInt(string strNode, int defValue)
{
try
{
//根据路径获取节点
string strTemp = element.GetAttribute(strNode);
return Convert.ToInt32(strTemp);
}
catch
{
return defValue;
}
}
#endregion
#region 4
/// <summary>
/// 读取指定节点的值
/// </summary>
/// <param name="strNode"></param>
/// <returns></returns>
public decimal GetAttrValueByDecimal(string strNode, decimal defValue)
{
try
{
//根据路径获取节点
string strTemp = element.GetAttribute(strNode);
return Convert.ToDecimal(strTemp);
}
catch
{
return defValue;
}
}
#endregion
#region 5()
/// <summary>
/// 读取指定节点的值
/// </summary>
/// <param name="strNode"></param>
/// <returns></returns>
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()
/// <summary>
/// 读取指定节点的值
/// </summary>
/// <param name="strNode"></param>
/// <returns></returns>
public DateTime GetAttrValueByDate(string strNode, DateTime defValue)
{
try
{
//根据路径获取节点
string strTemp = element.GetAttribute(strNode);
return Convert.ToDateTime(strTemp);
}
catch
{
return defValue;
}
}
#endregion
/// <summary>
/// 获取XML文件的根元素
/// </summary>
public XmlNode GetXmlRoot()
{
return xmlDoc.DocumentElement;
}
#region
/// <summary>
/// 获取所有列表
/// </summary>
/// <returns>如为1表示获取成功为0为失败</returns>
public XmlNodeList GetList()
{
try
{
return xmlDoc.DocumentElement.SelectNodes("child::list");
}
catch
{
return null;
}
}
#endregion
#region
/// <summary>
/// 新增节点
/// </summary>
/// <param name="strNode"></param>
/// <param name="strValue"></param>
/// <returns></returns>
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
/// <summary>
/// 新增节点并定位到新节点
/// </summary>
/// <param name="strNode"></param>
/// <param name="strValue"></param>
/// <returns></returns>
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
/// <summary>
/// 在指定节点前新增节点并定位到新节点
/// </summary>
/// <param name="strNode"></param>
/// <param name="strValue"></param>
/// <returns></returns>
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
/// <summary>
/// 删除节点
/// </summary>
/// <returns></returns>
public int DeleteNode()
{
try
{
//element.RemoveAll();
GetXmlRoot().RemoveChild(xmlNode);
xmlNode = null;
element = null;
return 1;
}
catch
{
return 0;
}
}
#endregion
#region XML文本
/// <summary>
/// 获取XML文本
/// </summary>
/// <returns></returns>
public string GetXMLText()
{
return xmlDoc.OuterXml;
}
#endregion
#region XML文本
/// <summary>
/// 获取文本
/// </summary>
/// <returns></returns>
public string GetText()
{
return xmlDoc.ToString(); ;
}
#endregion
}
}