Asp.Net+XML操作基類(修改,刪除,新增,創(chuàng)建)第1/2頁
*
* 功能說明:XML處理基類
* 作者: 劉功勛;
* 版本:V0.1(C#2.0);時(shí)間:2006-12-13
*
* *******************************************************************************/
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Xml;
using System.Text;
using MSXML2;
namespace EC
{
/// <summary>
/// XML 操作基類
/// </summary>
public class XmlObject : IDisposable
{
//以下為單一功能的靜態(tài)類
#region 讀取XML到DataSet
/**************************************************
* 函數(shù)名稱:GetXml(string XmlPath)
* 功能說明:讀取XML到DataSet
* 參 數(shù):XmlPath:xml文檔路徑
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDnsConfig/DnsConfig.xml"); //獲取xml路徑
* DataSet ds = EC.XmlObject.GetXml(xmlPath); //讀取xml到DataSet中
************************************************/
/// <summary>
/// 功能:讀取XML到DataSet中
/// </summary>
/// <param name="XmlPath">xml路徑</param>
/// <returns>DataSet</returns>
public static DataSet GetXml(string XmlPath)
{
DataSet ds = new DataSet();
ds.ReadXml(@XmlPath);
return ds;
}
#endregion
#region 讀取xml文檔并返回一個(gè)節(jié)點(diǎn)
/**************************************************
* 函數(shù)名稱:ReadXmlReturnNode(string XmlPath,string Node)
* 功能說明:讀取xml文檔并返回一個(gè)節(jié)點(diǎn):適用于一級(jí)節(jié)點(diǎn)
* 參 數(shù): XmlPath:xml文檔路徑;Node 返回的節(jié)點(diǎn)名稱
* 適應(yīng)用Xml:<?xml version="1.0" encoding="utf-8" ?>
* <root>
* <dns1>ns1.everdns.com</dns1>
* </root>
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDnsConfig/DnsConfig.xml"); //獲取xml路徑
* Response.Write(XmlObject.ReadXmlReturnNode(xmlPath, "mailmanager"));
************************************************/
/// <summary>
/// 讀取xml文檔并返回一個(gè)節(jié)點(diǎn):適用于一級(jí)節(jié)點(diǎn)
/// </summary>
/// <param name="XmlPath">xml路徑</param>
/// <param name="NodeName">節(jié)點(diǎn)</param>
/// <returns></returns>
public static string ReadXmlReturnNode(string XmlPath,string Node)
{
XmlDocument docXml = new XmlDocument();
docXml.Load(@XmlPath);
XmlNodeList xn = docXml.GetElementsByTagName(Node);
return xn.Item(0).InnerText.ToString();
}
#endregion
#region 查找數(shù)據(jù),返回一個(gè)DataSet
/**************************************************
* 函數(shù)名稱:GetXmlData(string xmlPath, string XmlPathNode)
* 功能說明:查找數(shù)據(jù),返回當(dāng)前節(jié)點(diǎn)的所有下級(jí)節(jié)點(diǎn),填充到一個(gè)DataSet中
* 參 數(shù):xmlPath:xml文檔路徑;XmlPathNode:當(dāng)前節(jié)點(diǎn)的路徑
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //獲取xml路徑
* DataSet ds = new DataSet();
* ds = XmlObject.GetXmlData(xmlPath, "root/items");//讀取當(dāng)前路徑
* this.GridView1.DataSource = ds;
* this.GridView1.DataBind();
* ds.Clear();
* ds.Dispose();
* Xml示例:
* <?xml version="1.0" encoding="utf-8" ?>
* <root>
* <items name="xinnet">
* <url>http://www.paycenter.com.cn/cgi-bin/</url>
* <port>80</port>
* </items>
* </root>
************************************************/
/// <summary>
/// 查找數(shù)據(jù),返回當(dāng)前節(jié)點(diǎn)的所有下級(jí)節(jié)點(diǎn),填充到一個(gè)DataSet中
/// </summary>
/// <param name="xmlPath">xml文檔路徑</param>
/// <param name="XmlPathNode">節(jié)點(diǎn)的路徑:根節(jié)點(diǎn)/父節(jié)點(diǎn)/當(dāng)前節(jié)點(diǎn)</param>
/// <returns></returns>
public static DataSet GetXmlData(string xmlPath, string XmlPathNode)
{
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
DataSet ds = new DataSet();
StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
ds.ReadXml(read);
return ds;
}
#endregion
#region 更新Xml節(jié)點(diǎn)內(nèi)容
/**************************************************
* 函數(shù)名稱:XmlNodeReplace(string xmlPath,string Node,string Content)
* 功能說明:更新Xml節(jié)點(diǎn)內(nèi)容
* 參 數(shù):xmlPath:xml文檔路徑;Node:當(dāng)前節(jié)點(diǎn)的路徑;Content:內(nèi)容
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //獲取xml路徑
* XmlObject.XmlNodeReplace(xmlPath, "root/test", "56789"); //更新節(jié)點(diǎn)內(nèi)容
************************************************/
/// <summary>
/// 更新Xml節(jié)點(diǎn)內(nèi)容
/// </summary>
/// <param name="xmlPath">xml路徑</param>
/// <param name="Node">要更換內(nèi)容的節(jié)點(diǎn):節(jié)點(diǎn)路徑 根節(jié)點(diǎn)/父節(jié)點(diǎn)/當(dāng)前節(jié)點(diǎn)</param>
/// <param name="Content">新的內(nèi)容</param>
public static void XmlNodeReplace(string xmlPath,string Node,string Content)
{
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
objXmlDoc.SelectSingleNode(Node).InnerText = Content;
objXmlDoc.Save(xmlPath);
}
#endregion
#region 刪除XML節(jié)點(diǎn)和此節(jié)點(diǎn)下的子節(jié)點(diǎn)
/**************************************************
* 函數(shù)名稱:XmlNodeDelete(string xmlPath,string Node)
* 功能說明:刪除XML節(jié)點(diǎn)和此節(jié)點(diǎn)下的子節(jié)點(diǎn)
* 參 數(shù):xmlPath:xml文檔路徑;Node:當(dāng)前節(jié)點(diǎn)的路徑;
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //獲取xml路徑
* XmlObject.XmlNodeDelete(xmlPath, "root/test"); //刪除當(dāng)前節(jié)點(diǎn)
************************************************/
/// <summary>
/// 刪除XML節(jié)點(diǎn)和此節(jié)點(diǎn)下的子節(jié)點(diǎn)
/// </summary>
/// <param name="xmlPath">xml文檔路徑</param>
/// <param name="Node">節(jié)點(diǎn)路徑</param>
public static void XmlNodeDelete(string xmlPath,string Node)
{
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
objXmlDoc.Save(xmlPath);
}
#endregion
#region 插入一個(gè)節(jié)點(diǎn)和此節(jié)點(diǎn)的字節(jié)點(diǎn)
/**************************************************
* 函數(shù)名稱:XmlInsertNode(string xmlPath, string MailNode, string ChildNode, string Element,string Content)
* 功能說明:插入一個(gè)節(jié)點(diǎn)和此節(jié)點(diǎn)的字節(jié)點(diǎn)
* 參 數(shù):xmlPath:xml文檔路徑;MailNode:當(dāng)前節(jié)點(diǎn)的路徑;ChildNode:新插入的節(jié)點(diǎn);Element:插入節(jié)點(diǎn)的子節(jié)點(diǎn);Content:子節(jié)點(diǎn)的內(nèi)容
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //獲取xml路徑
* XmlObject.XmlInsertNode(xmlPath, "root/test","test1","test2","測(cè)試內(nèi)容"); //插入一個(gè)節(jié)點(diǎn)和此節(jié)點(diǎn)的字節(jié)點(diǎn)
* 生成的XML格式為
* <test>
* <test1>
* <test2>測(cè)試內(nèi)容</test2>
* </test1>
* </test>
************************************************/
/// <summary>
/// 插入一個(gè)節(jié)點(diǎn)和此節(jié)點(diǎn)的字節(jié)點(diǎn)
/// </summary>
/// <param name="xmlPath">xml路徑</param>
/// <param name="MailNode">當(dāng)前節(jié)點(diǎn)路徑</param>
/// <param name="ChildNode">新插入節(jié)點(diǎn)</param>
/// <param name="Element">插入節(jié)點(diǎn)的子節(jié)點(diǎn)</param>
/// <param name="Content">子節(jié)點(diǎn)的內(nèi)容</param>
public static void XmlInsertNode(string xmlPath, string MailNode, string ChildNode, string Element,string Content)
{
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
XmlNode objRootNode = objXmlDoc.SelectSingleNode(MailNode);
XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
objRootNode.AppendChild(objChildNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objChildNode.AppendChild(objElement);
objXmlDoc.Save(xmlPath);
}
#endregion
#region 插入一節(jié)點(diǎn),帶一屬性
/**************************************************
* 函數(shù)名稱:XmlInsertElement(string xmlPath, string MainNode, string Element, string Attrib, string AttribContent, string Content)
* 功能說明:插入一節(jié)點(diǎn),帶一屬性
* 參 數(shù):xmlPath:xml文檔路徑;MailNode:當(dāng)前節(jié)點(diǎn)的路徑;Element:新插入的節(jié)點(diǎn);Attrib:屬性名稱;AttribContent:屬性值;Content:節(jié)點(diǎn)的內(nèi)容
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //獲取xml路徑
* XmlObject.XmlInsertElement(xmlPath, "root/test", "test1", "Attrib", "屬性值", "節(jié)點(diǎn)內(nèi)容"); //插入一節(jié)點(diǎn),帶一屬性
* 生成的XML格式為
* <test>
* <test1 Attrib="屬性值">節(jié)點(diǎn)內(nèi)容</test1>
* </test>
************************************************/
/// <summary>
/// 插入一節(jié)點(diǎn),帶一屬性
/// </summary>
/// <param name="xmlPath">Xml文檔路徑</param>
/// <param name="MainNode">當(dāng)前節(jié)點(diǎn)路徑</param>
/// <param name="Element">新節(jié)點(diǎn)</param>
/// <param name="Attrib">屬性名稱</param>
/// <param name="AttribContent">屬性值</param>
/// <param name="Content">新節(jié)點(diǎn)值</param>
public static void XmlInsertElement(string xmlPath, string MainNode, string Element, string Attrib, string AttribContent, string Content)
{
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.SetAttribute(Attrib, AttribContent);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
objXmlDoc.Save(xmlPath);
}
#endregion
#region 插入一節(jié)點(diǎn)不帶屬性
/**************************************************
* 函數(shù)名稱:XmlInsertElement(string xmlPath, string MainNode, string Element, string Content)
* 功能說明:插入一節(jié)點(diǎn)不帶屬性
* 參 數(shù):xmlPath:xml文檔路徑;MailNode:當(dāng)前節(jié)點(diǎn)的路徑;Element:新插入的節(jié)點(diǎn);Content:節(jié)點(diǎn)的內(nèi)容
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //獲取xml路徑
* XmlObject.XmlInsertElement(xmlPath, "root/test", "text1", "節(jié)點(diǎn)內(nèi)容"); //插入一節(jié)點(diǎn)不帶屬性
* 生成的XML格式為
* <test>
* <text1>節(jié)點(diǎn)內(nèi)容</text1>
* </test>
************************************************/
public static void XmlInsertElement(string xmlPath, string MainNode, string Element, string Content)
{
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
objXmlDoc.Save(xmlPath);
}
#endregion
//必須創(chuàng)建對(duì)象才能使用的類
private bool _alreadyDispose = false;
private string xmlPath;
private XmlDocument xmlDoc=new XmlDocument();
private XmlNode xmlNode;
private XmlElement xmlElem;
#region 構(gòu)造與釋構(gòu)
public XmlObject()
{
}
~XmlObject()
{
Dispose();
}
protected virtual void Dispose(bool isDisposing)
{
if (_alreadyDispose) return;
if (isDisposing)
{
//
}
_alreadyDispose = true;
}
#endregion
#region IDisposable 成員
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
#endregion
相關(guān)文章
asp.net中如何批量導(dǎo)出access某表內(nèi)容到word文檔
最近有項(xiàng)目需求是這樣的,需要將某表中的每一條記錄中的某些內(nèi)容導(dǎo)出在一個(gè)word文檔中。下面小編就把我的解決辦法分享給大家,供大家參考2015-10-10Visual Studio 2017+OpenCV環(huán)境搭建教程
這篇文章主要為大家詳細(xì)介紹了Visual Studio 2017+OpenCV環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03.net開發(fā)中批量刪除記錄時(shí)實(shí)現(xiàn)全選功能的具體方法
這篇文章介紹了.net開發(fā)中批量刪除記錄時(shí)實(shí)現(xiàn)全選功能的具體方法,有需要的朋友可以參考一下2013-11-11ASP.NET MVC運(yùn)行出現(xiàn)Uncaught TypeError: Cannot set property __MVC
同一相站點(diǎn),有些頁面的客戶端驗(yàn)證能工作,而有些死活不行。打開頁面就出現(xiàn)Uncaught TypeError: Cannot set property __MVC_FormValidation of null錯(cuò)誤2010-04-04.net讓線程支持超時(shí)的方法實(shí)例和線程在執(zhí)行結(jié)束后銷毀的方法
兩個(gè)問題:.net如何讓線程支持超時(shí)?.net如何讓線程在執(zhí)行結(jié)束后銷毀?本文就解決這二個(gè)問題2013-11-11ASP.NET的HtmlForm控件學(xué)習(xí)及Post與Get的區(qū)別概述
HtmlForm 控件用于控制form元素,本文主要介紹下HtmlForm控件的Method/Action方法(要提交數(shù)據(jù)的頁面,即數(shù)據(jù)要傳送至哪個(gè)網(wǎng)址)及Post與Get的區(qū)別感興趣的朋友可以了解下,或許對(duì)你學(xué)習(xí)HtmlForm控件有所幫助2013-02-02ASP.NET實(shí)現(xiàn)用戶注冊(cè)和驗(yàn)證功能(第4節(jié))
這篇文章主要介紹了ASP.NET實(shí)現(xiàn)用戶注冊(cè)和驗(yàn)證功能,學(xué)習(xí)ASP.NET驗(yàn)證控件的作用和使用方法,在此基礎(chǔ)上了解常用第三方控件,需要的朋友可以參考一下2015-08-08.NET程序集引用COM組件MSScriptControl遇到問題的解決方法
這篇文章主要為大家詳細(xì)介紹了.NET程序集引用COM組件MSScriptControl遇到問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01