Asp.Net+XML操作基类(修改,删除,新增,创建)第1/2页

时间:2021-05-28

/**********************************************************************************
*
*功能说明:XML处理基类
*作者:刘功勋;
*版本:V0.1(C#2.0);时间:2006-12-13
*
********************************************************************************/
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.IO;
usingSystem.Xml;
usingSystem.Text;
usingMSXML2;


namespaceEC
{
///<summary>
///XML操作基类
///</summary>
publicclassXmlObject:IDisposable
{




//以下为单一功能的静态类

#region读取XML到DataSet
/**************************************************
*函数名称:GetXml(stringXmlPath)
*功能说明:读取XML到DataSet
*参数:XmlPath:xml文档路径
*使用示列:
*usingEC;//引用命名空间
*stringxmlPath=Server.MapPath("/EBDnsConfig/DnsConfig.xml");//获取xml路径
*DataSetds=EC.XmlObject.GetXml(xmlPath);//读取xml到DataSet中
************************************************/
///<summary>
///功能:读取XML到DataSet中
///</summary>
///<paramname="XmlPath">xml路径</param>
///<returns>DataSet</returns>
publicstaticDataSetGetXml(stringXmlPath)
{
DataSetds=newDataSet();
ds.ReadXml(@XmlPath);
returnds;
}
#endregion

#region读取xml文档并返回一个节点
/**************************************************
*函数名称:ReadXmlReturnNode(stringXmlPath,stringNode)
*功能说明:读取xml文档并返回一个节点:适用于一级节点
*参数:XmlPath:xml文档路径;Node返回的节点名称
*适应用Xml:<?xmlversion="1.0"encoding="utf-8"?>
*<root>
*<dns1>ns1.everdns.com</dns1>
*</root>
*使用示列:
*usingEC;//引用命名空间
*stringxmlPath=Server.MapPath("/EBDnsConfig/DnsConfig.xml");//获取xml路径
*Response.Write(XmlObject.ReadXmlReturnNode(xmlPath,"mailmanager"));
************************************************/
///<summary>
///读取xml文档并返回一个节点:适用于一级节点
///</summary>
///<paramname="XmlPath">xml路径</param>
///<paramname="NodeName">节点</param>
///<returns></returns>
publicstaticstringReadXmlReturnNode(stringXmlPath,stringNode)
{
XmlDocumentdocXml=newXmlDocument();
docXml.Load(@XmlPath);
XmlNodeListxn=docXml.GetElementsByTagName(Node);
returnxn.Item(0).InnerText.ToString();
}
#endregion

#region查找数据,返回一个DataSet
/**************************************************
*函数名称:GetXmlData(stringxmlPath,stringXmlPathNode)
*功能说明:查找数据,返回当前节点的所有下级节点,填充到一个DataSet中
*参数:xmlPath:xml文档路径;XmlPathNode:当前节点的路径
*使用示列:
*usingEC;//引用命名空间
*stringxmlPath=Server.MapPath("/EBDomainConfig/DomainConfig.xml");//获取xml路径
*DataSetds=newDataSet();
*ds=XmlObject.GetXmlData(xmlPath,"root/items");//读取当前路径
*this.GridView1.DataSource=ds;
*this.GridView1.DataBind();
*ds.Clear();
*ds.Dispose();
*Xml示例:
*<?xmlversion="1.0"encoding="utf-8"?>
*<root>
*<itemsname="xinnet">
*<url>http://.cn/cgi-bin/</url>
*<port>80</port>
*</items>
*</root>
************************************************/
///<summary>
///查找数据,返回当前节点的所有下级节点,填充到一个DataSet中
///</summary>
///<paramname="xmlPath">xml文档路径</param>
///<paramname="XmlPathNode">节点的路径:根节点/父节点/当前节点</param>
///<returns></returns>
publicstaticDataSetGetXmlData(stringxmlPath,stringXmlPathNode)
{
XmlDocumentobjXmlDoc=newXmlDocument();
objXmlDoc.Load(xmlPath);
DataSetds=newDataSet();
StringReaderread=newStringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
ds.ReadXml(read);
returnds;
}


#endregion

#region更新Xml节点内容
/**************************************************
*函数名称:XmlNodeReplace(stringxmlPath,stringNode,stringContent)
*功能说明:更新Xml节点内容
*参数:xmlPath:xml文档路径;Node:当前节点的路径;Content:内容
*使用示列:
*usingEC;//引用命名空间
*stringxmlPath=Server.MapPath("/EBDomainConfig/DomainConfig.xml");//获取xml路径
*XmlObject.XmlNodeReplace(xmlPath,"root/test","56789");//更新节点内容
************************************************/
///<summary>
///更新Xml节点内容
///</summary>
///<paramname="xmlPath">xml路径</param>
///<paramname="Node">要更换内容的节点:节点路径根节点/父节点/当前节点</param>
///<paramname="Content">新的内容</param>
publicstaticvoidXmlNodeReplace(stringxmlPath,stringNode,stringContent)
{
XmlDocumentobjXmlDoc=newXmlDocument();
objXmlDoc.Load(xmlPath);
objXmlDoc.SelectSingleNode(Node).InnerText=Content;
objXmlDoc.Save(xmlPath);

}

#endregion

#region删除XML节点和此节点下的子节点
/**************************************************
*函数名称:XmlNodeDelete(stringxmlPath,stringNode)
*功能说明:删除XML节点和此节点下的子节点
*参数:xmlPath:xml文档路径;Node:当前节点的路径;
*使用示列:
*usingEC;//引用命名空间
*stringxmlPath=Server.MapPath("/EBDomainConfig/DomainConfig.xml");//获取xml路径
*XmlObject.XmlNodeDelete(xmlPath,"root/test");//删除当前节点
************************************************/
///<summary>
///删除XML节点和此节点下的子节点
///</summary>
///<paramname="xmlPath">xml文档路径</param>
///<paramname="Node">节点路径</param>
publicstaticvoidXmlNodeDelete(stringxmlPath,stringNode)
{
XmlDocumentobjXmlDoc=newXmlDocument();
objXmlDoc.Load(xmlPath);
stringmainNode=Node.Substring(0,Node.LastIndexOf("/"));
objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
objXmlDoc.Save(xmlPath);
}

#endregion

#region插入一个节点和此节点的字节点
/**************************************************
*函数名称:XmlInsertNode(stringxmlPath,stringMailNode,stringChildNode,stringElement,stringContent)
*功能说明:插入一个节点和此节点的字节点
*参数:xmlPath:xml文档路径;MailNode:当前节点的路径;ChildNode:新插入的节点;Element:插入节点的子节点;Content:子节点的内容
*使用示列:
*usingEC;//引用命名空间
*stringxmlPath=Server.MapPath("/EBDomainConfig/DomainConfig.xml");//获取xml路径
*XmlObject.XmlInsertNode(xmlPath,"root/test","test1","test2","测试内容");//插入一个节点和此节点的字节点
*生成的XML格式为
*<test>
*<test1>
*<test2>测试内容</test2>
*</test1>
*</test>
************************************************/
///<summary>
///插入一个节点和此节点的字节点
///</summary>
///<paramname="xmlPath">xml路径</param>
///<paramname="MailNode">当前节点路径</param>
///<paramname="ChildNode">新插入节点</param>
///<paramname="Element">插入节点的子节点</param>
///<paramname="Content">子节点的内容</param>
publicstaticvoidXmlInsertNode(stringxmlPath,stringMailNode,stringChildNode,stringElement,stringContent)
{
XmlDocumentobjXmlDoc=newXmlDocument();
objXmlDoc.Load(xmlPath);
XmlNodeobjRootNode=objXmlDoc.SelectSingleNode(MailNode);
XmlElementobjChildNode=objXmlDoc.CreateElement(ChildNode);
objRootNode.AppendChild(objChildNode);
XmlElementobjElement=objXmlDoc.CreateElement(Element);
objElement.InnerText=Content;
objChildNode.AppendChild(objElement);
objXmlDoc.Save(xmlPath);
}

#endregion

#region插入一节点,带一属性
/**************************************************
*函数名称:XmlInsertElement(stringxmlPath,stringMainNode,stringElement,stringAttrib,stringAttribContent,stringContent)
*功能说明:插入一节点,带一属性
*参数:xmlPath:xml文档路径;MailNode:当前节点的路径;Element:新插入的节点;Attrib:属性名称;AttribContent:属性值;Content:节点的内容
*使用示列:
*usingEC;//引用命名空间
*stringxmlPath=Server.MapPath("/EBDomainConfig/DomainConfig.xml");//获取xml路径
*XmlObject.XmlInsertElement(xmlPath,"root/test","test1","Attrib","属性值","节点内容");//插入一节点,带一属性
*生成的XML格式为
*<test>
*<test1Attrib="属性值">节点内容</test1>
*</test>
************************************************/
///<summary>
///插入一节点,带一属性
///</summary>
///<paramname="xmlPath">Xml文档路径</param>
///<paramname="MainNode">当前节点路径</param>
///<paramname="Element">新节点</param>
///<paramname="Attrib">属性名称</param>
///<paramname="AttribContent">属性值</param>
///<paramname="Content">新节点值</param>
publicstaticvoidXmlInsertElement(stringxmlPath,stringMainNode,stringElement,stringAttrib,stringAttribContent,stringContent)
{
XmlDocumentobjXmlDoc=newXmlDocument();
objXmlDoc.Load(xmlPath);
XmlNodeobjNode=objXmlDoc.SelectSingleNode(MainNode);
XmlElementobjElement=objXmlDoc.CreateElement(Element);
objElement.SetAttribute(Attrib,AttribContent);
objElement.InnerText=Content;
objNode.AppendChild(objElement);
objXmlDoc.Save(xmlPath);
}

#endregion

#region插入一节点不带属性
/**************************************************
*函数名称:XmlInsertElement(stringxmlPath,stringMainNode,stringElement,stringContent)
*功能说明:插入一节点不带属性
*参数:xmlPath:xml文档路径;MailNode:当前节点的路径;Element:新插入的节点;Content:节点的内容
*使用示列:
*usingEC;//引用命名空间
*stringxmlPath=Server.MapPath("/EBDomainConfig/DomainConfig.xml");//获取xml路径
*XmlObject.XmlInsertElement(xmlPath,"root/test","text1","节点内容");//插入一节点不带属性
*生成的XML格式为
*<test>
*<text1>节点内容</text1>
*</test>
************************************************/
publicstaticvoidXmlInsertElement(stringxmlPath,stringMainNode,stringElement,stringContent)
{
XmlDocumentobjXmlDoc=newXmlDocument();
objXmlDoc.Load(xmlPath);
XmlNodeobjNode=objXmlDoc.SelectSingleNode(MainNode);
XmlElementobjElement=objXmlDoc.CreateElement(Element);
objElement.InnerText=Content;
objNode.AppendChild(objElement);
objXmlDoc.Save(xmlPath);
}

#endregion


//必须创建对象才能使用的类

privatebool_alreadyDispose=false;
privatestringxmlPath;
privateXmlDocumentxmlDoc=newXmlDocument();

privateXmlNodexmlNode;
privateXmlElementxmlElem;

#region构造与释构
publicXmlObject()
{

}
~XmlObject()
{
Dispose();
}
protectedvirtualvoidDispose(boolisDisposing)
{
if(_alreadyDispose)return;
if(isDisposing)
{
//
}
_alreadyDispose=true;
}
#endregion

#regionIDisposable成员

publicvoidDispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

#endregion
12下一页阅读全文

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章