摘要:XML應用
########################## XML表建立 #################################
#region < XML表建立 >
public void xmlCreate()
{
XmlDocument xdoc = new XmlDocument();
xdoc.AppendChild(xdoc.CreateXmlDeclaration("1.0", "UTF-8", "yes"));
XmlElement xmlroot = xdoc.CreateElement("MemberArrary");
xdoc.AppendChild(xmlroot);
// 將建立的 XML 節點儲存為檔案
xdoc.Save(FilePath);
}
#endregion
########################## 新增XML資料 #################################
#region < 新增XML資料 >
/// <summary>
/// 新增XML資料
/// </summary>
/// <param name="NodeName">節點名稱</param>
/// <param name="Name">姓名</param>
/// <param name="Phone">聯絡電話</param>
/// <param name="Email">Email</param>
/// <returns></returns>
public bool xmlInsert(string NodeName, string Name, string Phone, string Email, string pwd)
{
XmlDocument xdoc = new XmlDocument();
if (!File.Exists(FilePath))//抓取不到檔案,則建立檔案
xmlCreate();
try
{
xdoc.Load(FilePath);//讀取XML資料
XmlNode XRootNode = xdoc.SelectSingleNode("//MemberArrary");//抓取COMPANY公司資料
//XmlElement memberinfo = xdoc.CreateElement("Member");
XmlElement memberinfo = xdoc.CreateElement(NodeName);
XmlElement NameChileID = xdoc.CreateElement("ID");
NameChileID.InnerText = StringCrypt.Encrypt(Gene.Trim(NodeName));
memberinfo.AppendChild(NameChileID);
XmlElement NameChileName = xdoc.CreateElement("Name");
NameChileName.InnerText = StringCrypt.Encrypt(Gene.Trim(Name));
memberinfo.AppendChild(NameChileName);
XmlElement NameChileEmail = xdoc.CreateElement("Email");
NameChileEmail.InnerText = StringCrypt.Encrypt(Gene.Trim(Email));
memberinfo.AppendChild(NameChileEmail);
XmlElement NameChilePhone = xdoc.CreateElement("Phone");
NameChilePhone.InnerText = StringCrypt.Encrypt(Gene.Trim(Phone));
memberinfo.AppendChild(NameChilePhone);
XmlElement NameChilePwd = xdoc.CreateElement("Pwd");
NameChilePwd.InnerText = StringCrypt.Encrypt(Gene.Trim(pwd));
memberinfo.AppendChild(NameChilePwd);
XRootNode.AppendChild(memberinfo);
// 將建立的 XML 節點儲存為檔案
xdoc.Save(FilePath);
return true;
}
catch
{ return false; }
}
#endregion
########################## 修改xml節點資料 #################################
#region < 修改xml節點資料 >
public bool xmlupdate(string NodeName, string Name, string Email, string Phone, string pwd)
{
XmlDocument xdoc = new XmlDocument();
try
{
xdoc.Load(FilePath);//讀取XML資料
if (Gene.Trim(Name) != "") //修改Name
xdoc.SelectSingleNode("//" + NodeName).SelectSingleNode("//Name").InnerText = StringCrypt.Encrypt(Name);
if (Gene.Trim(Email) != "") //修改Email
xdoc.SelectSingleNode("//" + NodeName).SelectSingleNode("//Email").InnerText = StringCrypt.Encrypt(Email);
if (Gene.Trim(Phone) != "")//修改Phone
xdoc.SelectSingleNode("//" + NodeName).SelectSingleNode("//Phone").InnerText = StringCrypt.Encrypt(Phone);
if (Gene.Trim(pwd) != "")//修改Phone
xdoc.SelectSingleNode("//" + NodeName).SelectSingleNode("//Phone").InnerText = StringCrypt.Encrypt(pwd);
xdoc.Save(FilePath);//儲存XML檔
return true;
}
catch
{
return false;
}
}
#endregion
########################## 刪除xml節點的子節點資料 #################################
#region < 刪除xml節點的子節點資料 >
public bool xmlDeleteNodeChildNode(string NodeName)
{
XmlDocument xdoc = new XmlDocument();
try
{
xdoc.Load(FilePath);//讀取XML資料
xdoc.SelectSingleNode("//" + NodeName).RemoveAll();
xdoc.Save(FilePath);
return true;
}
catch
{
return false;
}
}
#endregion
########################## 讀取單一節點 #################################
#region < 讀取單一節點 >
public csCloumns xmlReadNode(string NodeName)
{
XmlDocument doc = new XmlDocument();
doc.Load(FilePath);
XmlNode xd = doc.SelectSingleNode("//" + NodeName);
csCloumns ocolumn = new csCloumns();
ocolumn.ID = StringCrypt.Decrypt(xd["ID"].InnerText);
ocolumn.Name = StringCrypt.Decrypt(xd["Name"].InnerText);
ocolumn.Phone = StringCrypt.Decrypt(xd["Phone"].InnerText);
ocolumn.Email = StringCrypt.Decrypt(xd["Email"].InnerText);
ocolumn.Pwd = StringCrypt.Decrypt(xd["Pwd"].InnerText);
return ocolumn;
}
#endregion
########################## 修改單一節點 #################################
#region < 修改單一節點 >
public bool xmlSetNode(string NodeName, csCloumns ocolumn)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(FilePath);
XmlNode xd = doc.SelectSingleNode("//" + NodeName);
if (Gene.Trim(ocolumn.ID)!="") xd["ID"].InnerText = StringCrypt.Encrypt(Gene.Trim(ocolumn.ID));
if (Gene.Trim(ocolumn.Name) != "") xd["Name"].InnerText = StringCrypt.Encrypt(Gene.Trim(ocolumn.Name));
if (Gene.Trim(ocolumn.Phone) != "") xd["Phone"].InnerText = StringCrypt.Encrypt(Gene.Trim(ocolumn.Phone));
if (Gene.Trim(ocolumn.Email) != "") xd["Email"].InnerText = StringCrypt.Encrypt(Gene.Trim(ocolumn.Email));
if (Gene.Trim(ocolumn.Pwd) != "") xd["Pwd"].InnerText = StringCrypt.Encrypt(Gene.Trim(ocolumn.Pwd));
doc.Save(FilePath);
return true;
}
catch { return false; }
}
#endregion
########################## xml轉成DataTable #################################
#region < xml轉成DataTable >
public DataTable xmlConvertTable()
{
XmlDocument doc = new XmlDocument();
doc.Load(FilePath);
// XmlReader XR = XmlReader.Create(new System.IO.StringReader(doc.OuterXml));
// DataSet ds = new DataSet();
// ds.ReadXml(XR);
// DataTable dt = ds.Tables[0].Clone();
DataTable dt = new DataTable();
dt.Columns.Add("ID", System.Type.GetType("System.String"));
dt.Columns.Add("Name", System.Type.GetType("System.String"));
dt.Columns.Add("Email", System.Type.GetType("System.String"));
dt.Columns.Add("Phone", System.Type.GetType("System.String"));
XmlNode xnode = doc.SelectSingleNode("//MemberArrary");
XmlNodeList list = xnode.ChildNodes;
//("//MemberArrary");
foreach (XmlNode xd in list)
{
if (!xd.HasChildNodes) continue;
DataRow Newdr = dt.NewRow();
Newdr["ID"] = StringCrypt.Decrypt(Gene.Trim(xd["ID"].InnerText));
Newdr["Name"] = StringCrypt.Decrypt(Gene.Trim(xd["Name"].InnerText));
Newdr["Email"] = StringCrypt.Decrypt(Gene.Trim(xd["Email"].InnerText));
Newdr["Phone"] = StringCrypt.Decrypt(Gene.Trim(xd["Phone"].InnerText));
dt.Rows.Add(Newdr);
}
// ds.Dispose();
return dt;
}
#endregion
########################## 利用Application 機制配合xml儲存 取得流水號 #################################
#region < GetMaxCount 取得Idienty >
public Int64 GetMaxCount(Page _Page)
{
string CountFilePath = HttpContext.Current.Server.MapPath("~/App_Data/Count.xml");
XmlDocument xdoc = new XmlDocument();
if (!File.Exists(CountFilePath))//抓取不到檔案,則建立檔案
return -1;
try
{
xdoc.Load(CountFilePath);//讀取XML資料
_Page.Application.Lock();
Int64 count = Convert.ToInt64(xdoc.SelectSingleNode("//MemMaxCount").InnerText);//抓取COMPANY公司資料
xdoc.SelectSingleNode("//MemMaxCount").InnerText = (count + 1).ToString();
xdoc.Save(CountFilePath);
_Page.Application.UnLock();
return count;
}
catch
{ return -1; }
}
#endregion