using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.Configuration;
namespace JjbPublic
{
class XmlOperations
{
XmlDocument XmlDoc = null;
string CurFilePath = null;
public XmlOperations(string XmlFilePath)
{
XmlDoc = OpenXmlFile(XmlFilePath);
CurFilePath = XmlFilePath;
}
public XmlOperations(XmlDocument XmlDocObj)
{
XmlDoc = XmlDocObj;
}
/// <summary>
/// 返回正在处理的XmlDocument对象
/// </summary>
public XmlDocument ProcessingXmlDocument
{
get
{
return XmlDoc;
}
}
public static XmlDocument OpenXmlFile(string FilePath)
{
XmlDocument RetXmlDoc = new XmlDocument();
RetXmlDoc.Load(FilePath);
return RetXmlDoc;
}
/// <summary>
///
/// </summary>
/// <param name="filePath"></param>
/// <param name="rootElementName">根接点名称</param>
/// <returns>NULL or error message.</returns>
public static string CreateXmlFile(string FilePath, string RootElementName)
{
string RetInfo = null;
XmlDocument SaveXmlDoc = new XmlDocument();
try
{
SaveXmlDoc.InsertBefore(SaveXmlDoc.CreateNode(XmlNodeType.Element, RootElementName, null), SaveXmlDoc.DocumentElement);
SaveXmlDoc.InsertBefore(SaveXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null), SaveXmlDoc.DocumentElement);
SaveXmlDoc.InsertBefore(SaveXmlDoc.CreateComment(ConfigurationManager.AppSettings["copyrightInfo"].Replace("[br]", " ")), SaveXmlDoc.DocumentElement);
SaveXmlDoc.Save(FilePath);
}
catch (Exception err)
{
RetInfo = err.Message;
}
return RetInfo;
}
public static XmlDocument CreateXmlFile(string RootElementName)
{
XmlDocument CreaXmlDoc = new XmlDocument();
CreaXmlDoc.InsertBefore(CreaXmlDoc.CreateNode(XmlNodeType.Element, RootElementName, null), CreaXmlDoc.DocumentElement);
CreaXmlDoc.InsertBefore(CreaXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null), CreaXmlDoc.DocumentElement);
CreaXmlDoc.InsertBefore(CreaXmlDoc.CreateComment(ConfigurationManager.AppSettings["copyrightInfo"].Replace("[br]", " ")), CreaXmlDoc.DocumentElement);
return CreaXmlDoc;
}
/// <summary>
///
/// </summary>
/// <param name="parentNodeXPathExp">将要插入接点的父接点的XPath表达式</param>
/// <param name="nodeName"></param>
/// <param name="propertyName"></param>
/// <param name="propertyValue"></param>
/// <param name="nodeInnerText"></param>
/// <returns>NULL or error message.</returns>
public string InsertNode(string ParentNodeXPathExp, string NodeName, string[] PropertyName, string[] PropertyValue, string NodeInnerText)
{
string RetInfo = null;
XmlNode xn = XmlDoc.SelectSingleNode(ParentNodeXPathExp);
if (xn != null)
{
try
{
xn.AppendChild(CreateNode(NodeName, PropertyName, PropertyValue, NodeInnerText));
RetInfo = SaveXmlDoc();
}
catch (Exception err)
{
RetInfo = err.Message;
}
}
else
{
RetInfo = "未找到指定的父接点。XPath语句:" + ParentNodeXPathExp;
}
return RetInfo;
}
XmlNode CreateNode(string NodeName, string[] PropertyName, string[] PropertyValue, string NodeInnerText)
{
XmlNode Xn = XmlDoc.CreateNode(XmlNodeType.Element, NodeName, null);
if (PropertyName != null)
{
XmlAttributeCollection xac = XmlDoc.DocumentElement.Attributes;
XmlAttribute xa = null;
for (int i = 0; i < PropertyName.Length; i++)
{
xa = XmlDoc.CreateAttribute(PropertyName[i]);
xa.Value = PropertyValue[i];
Xn.Attributes.Append(xa);
}
}
Xn.InnerText = NodeInnerText;
return Xn;
}
string SaveXmlDoc()
{
if (CurFilePath != null)
{
try
{
XmlDoc.Save(CurFilePath);
return "";
}
catch (Exception err)
{
return err.Message;
}
}
return null;
}
/// <summary>
///
/// </summary>
/// <param name="nodeXPathExp"></param>
/// <returns>NULL or error message.</returns>
public string DeleteNode(string NodeXPathExp)
{
string RetInfo = null;
XmlNode Xn = XmlDoc.SelectSingleNode(NodeXPathExp);
if (Xn != null)
{
if (Xn == XmlDoc.DocumentElement.FirstChild.ParentNode)
{
RetInfo = "不能删除XML文档的根接点。";
}
else
{
try
{
Xn.ParentNode.RemoveChild(Xn);
RetInfo = SaveXmlDoc();
}
catch (Exception err)
{
RetInfo = err.Message;
}
}
}
else
{
RetInfo = "未找到指定的接点。XPath语句:" + NodeXPathExp;
}
return RetInfo;
}
/// <summary>
///
/// </summary>
/// <param name="xpathExp">XPath 表达式</param>
/// <returns></returns>
public XmlNodeList SelectNodes(string XpathExp)
{
XmlNodeList xnl = XmlDoc.SelectNodes(XpathExp);
return xnl;
}
#region 更新、删除和新增接点属性以及接点innerText
/// <summary>
/// 新增属性
/// 更新接点innerText
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="addPropertyName"></param>
/// <param name="addPropertyValue"></param>
/// <param name="nodeInnerText"></param>
/// <returns></returns>
public string AddNodesAttributes(string XpathExp, string[] AddPropertyName, string[] AddPropertyValue, string NodeInnerText)
{
string oNodeInnerText = (NodeInnerText == null) ? "" : NodeInnerText;
return UpdateNodes(XpathExp, null, null, null, AddPropertyName, AddPropertyValue, oNodeInnerText);
}
/// <summary>
/// 新增属性
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="addPropertyName"></param>
/// <param name="addPropertyValue"></param>
/// <returns></returns>
public string AddNodesAttributes(string XpathExp, string[] AddPropertyName, string[] AddPropertyValue)
{
return UpdateNodes(XpathExp, null, null, null, AddPropertyName, AddPropertyValue, null);
}
/// <summary>
/// 更新属性的名称和值
/// 更新接点的innerText
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="oldPropertyName"></param>
/// <param name="newPropertyName"></param>
/// <param name="newPropertyValue"></param>
/// <param name="nodeInnerText"></param>
/// <returns></returns>
public string UpdateNodesAttributes(string XpathExp, string[] OldPropertyName, string[] NewPropertyName, string[] NewPropertyValue, string NodeInnerText)
{
string oNodeInnerText = (NodeInnerText == null) ? "" : NodeInnerText;
return UpdateNodes(XpathExp, OldPropertyName, NewPropertyName, NewPropertyValue, null, null, oNodeInnerText);
}
/// <summary>
/// 更新属性的名称和值
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="oldPropertyName"></param>
/// <param name="newPropertyName"></param>
/// <param name="newPropertyValue"></param>
/// <returns></returns>
public string UpdateNodesAttributes(string XpathExp, string[] OldPropertyName, string[] NewPropertyName, string[] NewPropertyValue)
{
return UpdateNodes(XpathExp, OldPropertyName, NewPropertyName, NewPropertyValue, null, null, null);
}
/// <summary>
/// 更新属性的名称
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="oldPropertyName"></param>
/// <param name="newPropertyName"></param>
/// <returns></returns>
public string UpdateNodesAttributes(string XpathExp, string[] OldPropertyName, string[] NewPropertyName)
{
return UpdateNodes(XpathExp, OldPropertyName, NewPropertyName, null, null, null, null);
}
/// <summary>
/// 删除属性
/// 更新接点innerText
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="deletePropertyName"></param>
/// <param name="nodeInnerText"></param>
/// <returns></returns>
public string DeleteNodesAttributes(string XpathExp, string[] DeletePropertyName, string NodeInnerText)
{
string oNodeInnerText = (NodeInnerText == null) ? "" : NodeInnerText;
return UpdateNodes(XpathExp, DeletePropertyName, null, null, null, null, oNodeInnerText);
}
/// <summary>
/// 删除属性
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="deletePropertyName"></param>
/// <returns></returns>
public string DeleteNodesAttributes(string XpathExp, string[] DeletePropertyName)
{
return UpdateNodes(XpathExp, DeletePropertyName, null, null, null, null, null);
}
/// <summary>
/// 更新接点innerText
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="nodeInnerText"></param>
/// <returns></returns>
public string UpdateNodesText(string XpathExp, string NodeInnerText)
{
string oNodeInnerText = (NodeInnerText == null) ? "" : NodeInnerText;
return UpdateNodes(XpathExp, null, null, null, null, null, oNodeInnerText);
}
public string UpdateNodes(string XpathExp, string[] OldPropertyName, string[] NewPropertyName, string[] NewPropertyValue, string[] AddPropertyName, string[] AddPropertyValue, string NodeInnerText)
{
string RetInfo = null;
XmlNodeList xnl = XmlDoc.SelectNodes(XpathExp);
XmlNode tXn = null;
XmlAttribute xa = null;
XmlAttribute xan = null;
string newPN = null;
int j = 0;
for (int i = 0; i < xnl.Count; i++)
{
if (OldPropertyName != null)//删除和更新接点属性
{
for (j = 0; j < OldPropertyName.Length; j++)
{
xa = xnl[i].Attributes[OldPropertyName[j]];
if (xa != null)
{
if (NewPropertyName == null)
{
xnl[i].Attributes.Remove(xa);
}
else
{
newPN = NewPropertyName[j];
if (newPN == null || newPN == "")//remove attribute
{
xnl[i].Attributes.Remove(xa);
}
else//update attribute name and value
{
xan = XmlDoc.CreateAttribute(newPN);
xan.Value = NewPropertyValue[j];
//xa.Value;
xnl[i].Attributes.SetNamedItem(xan);
xnl[i].Attributes.Remove(xa);
}
}
}
}
}
if (AddPropertyName != null)//新增接点属性
{
for (j = 0; j < AddPropertyName.Length; j++)
{
xa = XmlDoc.CreateAttribute(AddPropertyName[j]);
if (AddPropertyValue != null)
{
xa.Value = AddPropertyValue[j];
}
xnl[i].Attributes.Append(xa);
}
}
if (NodeInnerText != null)
{
tXn = xnl[i];
SetXmlNodeText(ref tXn, NodeInnerText);
}
//xnl[i].FirstChild = nodeInnerText;//更新接点innerText
}
RetInfo = SaveXmlDoc();
return RetInfo;
}
void SetXmlNodeText(ref XmlNode opXN, string NewInnerText)
{
XmlNodeList Xnl = opXN.ChildNodes;
for (int i = 0; i < Xnl.Count; i++)
{
if (Xnl[i].NodeType == XmlNodeType.Text)
{
opXN.RemoveChild(Xnl[i]);
}
}
opXN.InsertBefore(XmlDoc.CreateTextNode(NewInnerText), opXN.FirstChild);
}
#endregion
}
}
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.Configuration;
namespace JjbPublic
{
class XmlOperations
{
XmlDocument XmlDoc = null;
string CurFilePath = null;
public XmlOperations(string XmlFilePath)
{
XmlDoc = OpenXmlFile(XmlFilePath);
CurFilePath = XmlFilePath;
}
public XmlOperations(XmlDocument XmlDocObj)
{
XmlDoc = XmlDocObj;
}
/// <summary>
/// 返回正在处理的XmlDocument对象
/// </summary>
public XmlDocument ProcessingXmlDocument
{
get
{
return XmlDoc;
}
}
public static XmlDocument OpenXmlFile(string FilePath)
{
XmlDocument RetXmlDoc = new XmlDocument();
RetXmlDoc.Load(FilePath);
return RetXmlDoc;
}
/// <summary>
///
/// </summary>
/// <param name="filePath"></param>
/// <param name="rootElementName">根接点名称</param>
/// <returns>NULL or error message.</returns>
public static string CreateXmlFile(string FilePath, string RootElementName)
{
string RetInfo = null;
XmlDocument SaveXmlDoc = new XmlDocument();
try
{
SaveXmlDoc.InsertBefore(SaveXmlDoc.CreateNode(XmlNodeType.Element, RootElementName, null), SaveXmlDoc.DocumentElement);
SaveXmlDoc.InsertBefore(SaveXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null), SaveXmlDoc.DocumentElement);
SaveXmlDoc.InsertBefore(SaveXmlDoc.CreateComment(ConfigurationManager.AppSettings["copyrightInfo"].Replace("[br]", " ")), SaveXmlDoc.DocumentElement);
SaveXmlDoc.Save(FilePath);
}
catch (Exception err)
{
RetInfo = err.Message;
}
return RetInfo;
}
public static XmlDocument CreateXmlFile(string RootElementName)
{
XmlDocument CreaXmlDoc = new XmlDocument();
CreaXmlDoc.InsertBefore(CreaXmlDoc.CreateNode(XmlNodeType.Element, RootElementName, null), CreaXmlDoc.DocumentElement);
CreaXmlDoc.InsertBefore(CreaXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null), CreaXmlDoc.DocumentElement);
CreaXmlDoc.InsertBefore(CreaXmlDoc.CreateComment(ConfigurationManager.AppSettings["copyrightInfo"].Replace("[br]", " ")), CreaXmlDoc.DocumentElement);
return CreaXmlDoc;
}
/// <summary>
///
/// </summary>
/// <param name="parentNodeXPathExp">将要插入接点的父接点的XPath表达式</param>
/// <param name="nodeName"></param>
/// <param name="propertyName"></param>
/// <param name="propertyValue"></param>
/// <param name="nodeInnerText"></param>
/// <returns>NULL or error message.</returns>
public string InsertNode(string ParentNodeXPathExp, string NodeName, string[] PropertyName, string[] PropertyValue, string NodeInnerText)
{
string RetInfo = null;
XmlNode xn = XmlDoc.SelectSingleNode(ParentNodeXPathExp);
if (xn != null)
{
try
{
xn.AppendChild(CreateNode(NodeName, PropertyName, PropertyValue, NodeInnerText));
RetInfo = SaveXmlDoc();
}
catch (Exception err)
{
RetInfo = err.Message;
}
}
else
{
RetInfo = "未找到指定的父接点。XPath语句:" + ParentNodeXPathExp;
}
return RetInfo;
}
XmlNode CreateNode(string NodeName, string[] PropertyName, string[] PropertyValue, string NodeInnerText)
{
XmlNode Xn = XmlDoc.CreateNode(XmlNodeType.Element, NodeName, null);
if (PropertyName != null)
{
XmlAttributeCollection xac = XmlDoc.DocumentElement.Attributes;
XmlAttribute xa = null;
for (int i = 0; i < PropertyName.Length; i++)
{
xa = XmlDoc.CreateAttribute(PropertyName[i]);
xa.Value = PropertyValue[i];
Xn.Attributes.Append(xa);
}
}
Xn.InnerText = NodeInnerText;
return Xn;
}
string SaveXmlDoc()
{
if (CurFilePath != null)
{
try
{
XmlDoc.Save(CurFilePath);
return "";
}
catch (Exception err)
{
return err.Message;
}
}
return null;
}
/// <summary>
///
/// </summary>
/// <param name="nodeXPathExp"></param>
/// <returns>NULL or error message.</returns>
public string DeleteNode(string NodeXPathExp)
{
string RetInfo = null;
XmlNode Xn = XmlDoc.SelectSingleNode(NodeXPathExp);
if (Xn != null)
{
if (Xn == XmlDoc.DocumentElement.FirstChild.ParentNode)
{
RetInfo = "不能删除XML文档的根接点。";
}
else
{
try
{
Xn.ParentNode.RemoveChild(Xn);
RetInfo = SaveXmlDoc();
}
catch (Exception err)
{
RetInfo = err.Message;
}
}
}
else
{
RetInfo = "未找到指定的接点。XPath语句:" + NodeXPathExp;
}
return RetInfo;
}
/// <summary>
///
/// </summary>
/// <param name="xpathExp">XPath 表达式</param>
/// <returns></returns>
public XmlNodeList SelectNodes(string XpathExp)
{
XmlNodeList xnl = XmlDoc.SelectNodes(XpathExp);
return xnl;
}
#region 更新、删除和新增接点属性以及接点innerText
/// <summary>
/// 新增属性
/// 更新接点innerText
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="addPropertyName"></param>
/// <param name="addPropertyValue"></param>
/// <param name="nodeInnerText"></param>
/// <returns></returns>
public string AddNodesAttributes(string XpathExp, string[] AddPropertyName, string[] AddPropertyValue, string NodeInnerText)
{
string oNodeInnerText = (NodeInnerText == null) ? "" : NodeInnerText;
return UpdateNodes(XpathExp, null, null, null, AddPropertyName, AddPropertyValue, oNodeInnerText);
}
/// <summary>
/// 新增属性
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="addPropertyName"></param>
/// <param name="addPropertyValue"></param>
/// <returns></returns>
public string AddNodesAttributes(string XpathExp, string[] AddPropertyName, string[] AddPropertyValue)
{
return UpdateNodes(XpathExp, null, null, null, AddPropertyName, AddPropertyValue, null);
}
/// <summary>
/// 更新属性的名称和值
/// 更新接点的innerText
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="oldPropertyName"></param>
/// <param name="newPropertyName"></param>
/// <param name="newPropertyValue"></param>
/// <param name="nodeInnerText"></param>
/// <returns></returns>
public string UpdateNodesAttributes(string XpathExp, string[] OldPropertyName, string[] NewPropertyName, string[] NewPropertyValue, string NodeInnerText)
{
string oNodeInnerText = (NodeInnerText == null) ? "" : NodeInnerText;
return UpdateNodes(XpathExp, OldPropertyName, NewPropertyName, NewPropertyValue, null, null, oNodeInnerText);
}
/// <summary>
/// 更新属性的名称和值
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="oldPropertyName"></param>
/// <param name="newPropertyName"></param>
/// <param name="newPropertyValue"></param>
/// <returns></returns>
public string UpdateNodesAttributes(string XpathExp, string[] OldPropertyName, string[] NewPropertyName, string[] NewPropertyValue)
{
return UpdateNodes(XpathExp, OldPropertyName, NewPropertyName, NewPropertyValue, null, null, null);
}
/// <summary>
/// 更新属性的名称
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="oldPropertyName"></param>
/// <param name="newPropertyName"></param>
/// <returns></returns>
public string UpdateNodesAttributes(string XpathExp, string[] OldPropertyName, string[] NewPropertyName)
{
return UpdateNodes(XpathExp, OldPropertyName, NewPropertyName, null, null, null, null);
}
/// <summary>
/// 删除属性
/// 更新接点innerText
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="deletePropertyName"></param>
/// <param name="nodeInnerText"></param>
/// <returns></returns>
public string DeleteNodesAttributes(string XpathExp, string[] DeletePropertyName, string NodeInnerText)
{
string oNodeInnerText = (NodeInnerText == null) ? "" : NodeInnerText;
return UpdateNodes(XpathExp, DeletePropertyName, null, null, null, null, oNodeInnerText);
}
/// <summary>
/// 删除属性
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="deletePropertyName"></param>
/// <returns></returns>
public string DeleteNodesAttributes(string XpathExp, string[] DeletePropertyName)
{
return UpdateNodes(XpathExp, DeletePropertyName, null, null, null, null, null);
}
/// <summary>
/// 更新接点innerText
/// </summary>
/// <param name="xpathExp"></param>
/// <param name="nodeInnerText"></param>
/// <returns></returns>
public string UpdateNodesText(string XpathExp, string NodeInnerText)
{
string oNodeInnerText = (NodeInnerText == null) ? "" : NodeInnerText;
return UpdateNodes(XpathExp, null, null, null, null, null, oNodeInnerText);
}
public string UpdateNodes(string XpathExp, string[] OldPropertyName, string[] NewPropertyName, string[] NewPropertyValue, string[] AddPropertyName, string[] AddPropertyValue, string NodeInnerText)
{
string RetInfo = null;
XmlNodeList xnl = XmlDoc.SelectNodes(XpathExp);
XmlNode tXn = null;
XmlAttribute xa = null;
XmlAttribute xan = null;
string newPN = null;
int j = 0;
for (int i = 0; i < xnl.Count; i++)
{
if (OldPropertyName != null)//删除和更新接点属性
{
for (j = 0; j < OldPropertyName.Length; j++)
{
xa = xnl[i].Attributes[OldPropertyName[j]];
if (xa != null)
{
if (NewPropertyName == null)
{
xnl[i].Attributes.Remove(xa);
}
else
{
newPN = NewPropertyName[j];
if (newPN == null || newPN == "")//remove attribute
{
xnl[i].Attributes.Remove(xa);
}
else//update attribute name and value
{
xan = XmlDoc.CreateAttribute(newPN);
xan.Value = NewPropertyValue[j];
//xa.Value;
xnl[i].Attributes.SetNamedItem(xan);
xnl[i].Attributes.Remove(xa);
}
}
}
}
}
if (AddPropertyName != null)//新增接点属性
{
for (j = 0; j < AddPropertyName.Length; j++)
{
xa = XmlDoc.CreateAttribute(AddPropertyName[j]);
if (AddPropertyValue != null)
{
xa.Value = AddPropertyValue[j];
}
xnl[i].Attributes.Append(xa);
}
}
if (NodeInnerText != null)
{
tXn = xnl[i];
SetXmlNodeText(ref tXn, NodeInnerText);
}
//xnl[i].FirstChild = nodeInnerText;//更新接点innerText
}
RetInfo = SaveXmlDoc();
return RetInfo;
}
void SetXmlNodeText(ref XmlNode opXN, string NewInnerText)
{
XmlNodeList Xnl = opXN.ChildNodes;
for (int i = 0; i < Xnl.Count; i++)
{
if (Xnl[i].NodeType == XmlNodeType.Text)
{
opXN.RemoveChild(Xnl[i]);
}
}
opXN.InsertBefore(XmlDoc.CreateTextNode(NewInnerText), opXN.FirstChild);
}
#endregion
}
}
利用该类进行操作:
如果存在则更新,不存在进行写入操作。
[WebMethod(EnableSession = true)]
public string GetRandomStr(string LoginID)
{
string GuidValueStr = Guid.NewGuid().ToString();
Session[LoginID] = GuidValueStr;
return GuidValueStr;
//try
//{
// string FileStr = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Config/Web.config");
// XmlOperations XmlDoc = new XmlOperations(FileStr);
// string GuidValueStr = Guid.NewGuid().ToString();
// System.Xml.XmlNodeList Xnl = XmlDoc.SelectNodes(string.Format("//add[@key='{0}']", LoginID));
// if (Xnl != null && Xnl.Count > 0)
// {
// string[] OldPropertyName = new string[1] { "value" };
// string[] NewPropertyName = new string[1] { "value" };
// string[] NewPropertyValue = new string[1] { GuidValueStr };
// string RetValue = XmlDoc.UpdateNodes(string.Format("//add[@key='{0}']", LoginID), OldPropertyName, NewPropertyName, NewPropertyValue, null, null, null);
// if (RetValue == "")//返回""为执行成功 否则 null 或者错误消息执行失败
// {
// return GuidValueStr;
// }
// }
// else
// {
// string[] NewPropertyName = new string[2] { "key", "value" };
// string[] NewPropertyValue = new string[2] { LoginID, GuidValueStr };
// string RetValue = XmlDoc.InsertNode("//appSettings", "add", NewPropertyName, NewPropertyValue, null);
// if (RetValue == "")//返回""为执行成功 否则 null 或者错误消息执行失败
// {
// return GuidValueStr;
// }
// }
//}
//catch(Exception Ex)
//{
// LogFactory.LogWriteText("生成随机串的时候出现错误:"+Ex.Message);
//}
//return "-1";
}
public string GetRandomStr(string LoginID)
{
string GuidValueStr = Guid.NewGuid().ToString();
Session[LoginID] = GuidValueStr;
return GuidValueStr;
//try
//{
// string FileStr = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Config/Web.config");
// XmlOperations XmlDoc = new XmlOperations(FileStr);
// string GuidValueStr = Guid.NewGuid().ToString();
// System.Xml.XmlNodeList Xnl = XmlDoc.SelectNodes(string.Format("//add[@key='{0}']", LoginID));
// if (Xnl != null && Xnl.Count > 0)
// {
// string[] OldPropertyName = new string[1] { "value" };
// string[] NewPropertyName = new string[1] { "value" };
// string[] NewPropertyValue = new string[1] { GuidValueStr };
// string RetValue = XmlDoc.UpdateNodes(string.Format("//add[@key='{0}']", LoginID), OldPropertyName, NewPropertyName, NewPropertyValue, null, null, null);
// if (RetValue == "")//返回""为执行成功 否则 null 或者错误消息执行失败
// {
// return GuidValueStr;
// }
// }
// else
// {
// string[] NewPropertyName = new string[2] { "key", "value" };
// string[] NewPropertyValue = new string[2] { LoginID, GuidValueStr };
// string RetValue = XmlDoc.InsertNode("//appSettings", "add", NewPropertyName, NewPropertyValue, null);
// if (RetValue == "")//返回""为执行成功 否则 null 或者错误消息执行失败
// {
// return GuidValueStr;
// }
// }
//}
//catch(Exception Ex)
//{
// LogFactory.LogWriteText("生成随机串的时候出现错误:"+Ex.Message);
//}
//return "-1";
}
进行交易操作:
[WebMethod]
public string GetTradeInfo(int GoldAmount,string RandomStr )
{
//如果RandomStr是合法的那么进行转换操作
//返回 BeanCount,RandomStr,ErrString
string RetStr = string.Format("ErrCode={0},RandomStr={1},ErrMsg={2}", "-1", RandomStr, "用户信息异常.");
string FileStr = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Config/Web.config");
XmlOperations XmlDoc = new XmlOperations(FileStr);
System.Xml.XmlNodeList Xnl = XmlDoc.SelectNodes(string.Format("//add[@value='{0}']", RandomStr));
if (Xnl != null && Xnl.Count > 0)
{
int LoginID = Utils.StrToIntDef(Xnl[0].Attributes["key"].Value, -1);
if (LoginID == -1)
{
RetStr = string.Format("{0},{1},{2}", "-1", RandomStr, "用户信息异常.");
}
else
{
int BeanCount = SysClass.GetExchangedAmount(GoldAmount, 1);//兑换后的游戏豆的数量。
if (BeanCount == -1)
{
RetStr = string.Format("{0},{1},{2}", "-1", RandomStr, "转帐过程出现异常.");
}
else
{
XmlDoc.DeleteNode(string.Format("//add[@value='{0}']", RandomStr));
RetStr = string.Format("{0},{1},{2}", BeanCount.ToString(), RandomStr, "");
}
}
}
else
{
RetStr = string.Format("{0},{1},{2}", "-1", RandomStr, "用户信息异常.");
}
return RetStr;
}
public string GetTradeInfo(int GoldAmount,string RandomStr )
{
//如果RandomStr是合法的那么进行转换操作
//返回 BeanCount,RandomStr,ErrString
string RetStr = string.Format("ErrCode={0},RandomStr={1},ErrMsg={2}", "-1", RandomStr, "用户信息异常.");
string FileStr = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Config/Web.config");
XmlOperations XmlDoc = new XmlOperations(FileStr);
System.Xml.XmlNodeList Xnl = XmlDoc.SelectNodes(string.Format("//add[@value='{0}']", RandomStr));
if (Xnl != null && Xnl.Count > 0)
{
int LoginID = Utils.StrToIntDef(Xnl[0].Attributes["key"].Value, -1);
if (LoginID == -1)
{
RetStr = string.Format("{0},{1},{2}", "-1", RandomStr, "用户信息异常.");
}
else
{
int BeanCount = SysClass.GetExchangedAmount(GoldAmount, 1);//兑换后的游戏豆的数量。
if (BeanCount == -1)
{
RetStr = string.Format("{0},{1},{2}", "-1", RandomStr, "转帐过程出现异常.");
}
else
{
XmlDoc.DeleteNode(string.Format("//add[@value='{0}']", RandomStr));
RetStr = string.Format("{0},{1},{2}", BeanCount.ToString(), RandomStr, "");
}
}
}
else
{
RetStr = string.Format("{0},{1},{2}", "-1", RandomStr, "用户信息异常.");
}
return RetStr;
}