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;
}