Asp.Net+XML操作基類(修改,刪除,新增,建立)第1/2頁

來源:互聯網
上載者:User

/**********************************************************************************
*
* 功能說明:XML處理基類
* 作者: 劉功勳;
* 版本:V0.1(C#2.0);時間: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
{

//以下為單一功能的靜態類

#region 讀取XML到DataSet
/**************************************************
* 函數名稱:GetXml(string XmlPath)
* 功能說明:讀取XML到DataSet
* 參 數: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文檔並返回一個節點
/**************************************************
* 函數名稱:ReadXmlReturnNode(string XmlPath,string Node)
* 功能說明:讀取xml文檔並返回一個節點:適用於一級節點
* 參 數: XmlPath:xml文檔路徑;Node 返回的節點名稱
* 適應用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文檔並返回一個節點:適用於一級節點
/// </summary>
/// <param name="XmlPath">xml路徑</param>
/// <param name="NodeName">節點</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 尋找資料,返回一個DataSet
/**************************************************
* 函數名稱:GetXmlData(string xmlPath, string XmlPathNode)
* 功能說明:尋找資料,返回當前節點的所有下級節點,填充到一個DataSet中
* 參 數:xmlPath:xml文檔路徑;XmlPathNode:當前節點的路徑
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //擷取xml路徑
* DataSet ds = new DataSet();
* ds = XmlObject.GetXmlData(xmlPath, "root/items");//讀取當前路徑
* 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>
/// 尋找資料,返回當前節點的所有下級節點,填充到一個DataSet中
/// </summary>
/// <param name="xmlPath">xml文檔路徑</param>
/// <param name="XmlPathNode">節點的路徑:根節點/父節點/當前節點</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節點內容
/**************************************************
* 函數名稱:XmlNodeReplace(string xmlPath,string Node,string Content)
* 功能說明:更新Xml節點內容
* 參 數:xmlPath:xml文檔路徑;Node:當前節點的路徑;Content:內容
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //擷取xml路徑
* XmlObject.XmlNodeReplace(xmlPath, "root/test", "56789"); //更新節點內容
************************************************/
/// <summary>
/// 更新Xml節點內容
/// </summary>
/// <param name="xmlPath">xml路徑</param>
/// <param name="Node">要更換內容的節點:節點路徑 根節點/父節點/當前節點</param>
/// <param name="Content">新的內容</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節點和此節點下的子節點
/**************************************************
* 函數名稱:XmlNodeDelete(string xmlPath,string Node)
* 功能說明:刪除XML節點和此節點下的子節點
* 參 數:xmlPath:xml文檔路徑;Node:當前節點的路徑;
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //擷取xml路徑
* XmlObject.XmlNodeDelete(xmlPath, "root/test"); //刪除當前節點
************************************************/
/// <summary>
/// 刪除XML節點和此節點下的子節點
/// </summary>
/// <param name="xmlPath">xml文檔路徑</param>
/// <param name="Node">節點路徑</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 插入一個節點和此節點的位元組點
/**************************************************
* 函數名稱:XmlInsertNode(string xmlPath, string MailNode, string ChildNode, string Element,string Content)
* 功能說明:插入一個節點和此節點的位元組點
* 參 數:xmlPath:xml文檔路徑;MailNode:當前節點的路徑;ChildNode:新插入的節點;Element:插入節點的子節點;Content:子節點的內容
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //擷取xml路徑
* XmlObject.XmlInsertNode(xmlPath, "root/test","test1","test2","測試內容"); //插入一個節點和此節點的位元組點
* 產生的XML格式為
* <test>
* <test1>
* <test2>測試內容</test2>
* </test1>
* </test>
************************************************/
/// <summary>
/// 插入一個節點和此節點的位元組點
/// </summary>
/// <param name="xmlPath">xml路徑</param>
/// <param name="MailNode">當前節點路徑</param>
/// <param name="ChildNode">新插入節點</param>
/// <param name="Element">插入節點的子節點</param>
/// <param name="Content">子節點的內容</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 插入一節點,帶一屬性
/**************************************************
* 函數名稱:XmlInsertElement(string xmlPath, string MainNode, string Element, string Attrib, string AttribContent, string Content)
* 功能說明:插入一節點,帶一屬性
* 參 數:xmlPath:xml文檔路徑;MailNode:當前節點的路徑;Element:新插入的節點;Attrib:屬性名稱;AttribContent:屬性值;Content:節點的內容
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //擷取xml路徑
* XmlObject.XmlInsertElement(xmlPath, "root/test", "test1", "Attrib", "屬性值", "節點內容"); //插入一節點,帶一屬性
* 產生的XML格式為
* <test>
* <test1 Attrib="屬性值">節點內容</test1>
* </test>
************************************************/
/// <summary>
/// 插入一節點,帶一屬性
/// </summary>
/// <param name="xmlPath">Xml文檔路徑</param>
/// <param name="MainNode">當前節點路徑</param>
/// <param name="Element">新節點</param>
/// <param name="Attrib">屬性名稱</param>
/// <param name="AttribContent">屬性值</param>
/// <param name="Content">新節點值</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 插入一節點不帶屬性
/**************************************************
* 函數名稱:XmlInsertElement(string xmlPath, string MainNode, string Element, string Content)
* 功能說明:插入一節點不帶屬性
* 參 數:xmlPath:xml文檔路徑;MailNode:當前節點的路徑;Element:新插入的節點;Content:節點的內容
* 使用示列:
* using EC; //引用命名空間
* string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //擷取xml路徑
* XmlObject.XmlInsertElement(xmlPath, "root/test", "text1", "節點內容"); //插入一節點不帶屬性
* 產生的XML格式為
* <test>
* <text1>節點內容</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

//必須建立對象才能使用的類

private bool _alreadyDispose = false;
private string xmlPath;
private XmlDocument xmlDoc=new XmlDocument();

private XmlNode xmlNode;
private XmlElement xmlElem;

#region 構造與釋構
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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.