c#写xml文件,c# XML,C#实现的xml操作类完整实例

c#写xml文件,c# XML,C#实现的xml操作类完整实例

这篇文章主要介绍了C#实现的可扩展标记语言操作类,包含C#针对可扩展标记语言的创建、删除、遍历、插入等常见操作,需要的朋友可以参考下

本文实例讲述了C#实现的可扩展标记语言操作类,分享给大家供大家参考,具体如下:

使用系统;

使用系统。数据;

使用系统。配置;

使用系统网页。

使用系统。网络安全;

使用系统Web . com。用户界面

使用系统Web . com。UI。web控件

使用系统web . com。ui。web控件。web部件;

使用系统Web . com。UI。html控件

使用系统。木卫一;

使用系统. Xml

使用系统。文本;

命名空间肌肉

{

///摘要

///XML操作基类

////摘要

公共类XmlHelper : IDisposable

{

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

#地区读取可扩展标记语言到资料组

/**//**************************************************

* 函数名称:GetXml(字符串XmlPath)

* 功能说明:读取可扩展标记语言到资料组

* 参数:XmlPath:xml文档路径

* 使用示列:

*使用欧共体;//引用命名空间

* string xmlPath=Server .MapPath('/EBDnsConfig/dnsconfig。XML’);//获取可扩展标记语言路径

*数据集ds=EC .XML对象。获取XML(XML路径);//读取可扩展标记语言到资料组中

************************************************/

/**////摘要

///功能:读取可扩展标记语言到资料组中

////摘要

///param name='XmlPath'xml路径/param

///returnsDataSet/returns

公共静态数据集GetXml(字符串XmlPath)

{

数据集ds=新数据集();

ds .读取XML(@ XML path);

返回ds;

}

#结束区域

#地区读取可扩展标记语言文档并返回一个节点

/**//**************************************************

* 函数名称:ReadXmlReturnNode(字符串XmlPath,字符串节点)

* 功能说明:读取可扩展标记语言文档并返回一个节点:适用于一级节点

* 参数:XmlPath:xml文档路径;结节返回的节点名称

* 适应用Xml:可扩展标记语言版本='1.0 '编码='utf-8 '?

*根

* dns1ns1.everdns.com/dns1

* /root

* 使用示列:

*使用欧共体;//引用命名空间

* string xmlPath=Server .MapPath('/EBDnsConfig/dnsconfig。XML’);//获取可扩展标记语言路径

*回应。写(XmlObject .ReadXmlReturnNode(xmlPath,“邮件管理器”);

************************************************/

/**////摘要

///读取可扩展标记语言文档并返回一个节点:适用于一级节点

////摘要

///param name='XmlPath'xml路径/param

///param name='NodeName '节点/param

///返回/返回

公共静态字符串ReadXmlReturnNode(字符串XmlPath,字符串节点)

{

XML文档doc XML=new XML document();

docXml .load(@ XML path);

XmlNodeList xn=docXml .GetElementsByTagName(节点);

返回xn .项目(0)。内部文本。tostring();

}

#结束区域

#地区查找数据,返回一个资料组

/**//**************************************************

* 函数名称:GetXmlData(字符串xmlPath,字符串XmlPathNode)

* 功能说明:查找数据,返回当前节点的所有下级节点,填充到一个资料组中

* 参数:xmlPath:xml文档路径;XmlPathNode:当前节点的路径

* 使用示列:

*使用欧共体;//引用命名空间

* string xmlPath=Server .MapPath('/EBDomainConfig/domain config。XML’);//获取可扩展标记语言路径

*数据集ds=新数据集();

* ds=XmlObject .GetXmlData(xmlPath,' root/items ');//读取当前路径

*这个GridView1。数据源=ds

*这个GridView 1。DataBind();

* ds .clear();

* ds .dispose();

* Xml示例:

* ?可扩展标记语言版本='1.0 '编码='utf-8 '?

*根

*项目名称='xinnet '

* urlhttp://www.paycenter.com.cn/cgi-bin//url

*端口80/端口

*/项目

* /root

************************************************/

/**////摘要

///查找数据,返回当前节点的所有下级节点,填充到一个资料组中

////摘要

///param name='xmlPath'xml文档路径/param

///param name='XmlPathNode '节点的路径:根节点/父节点/当前节点/param

///返回/返回

公共静态数据集GetXmlData(字符串xmlPath,字符串XmlPathNode)

{

XML document objxml doc=new XML document();

objXmlDoc .加载(XML路径);

数据集ds=新数据集();

字符串读取器read=新的字符串读取器(objXmlDoc .SelectSingleNode(XmlPathNode).外部XML);

ds .ReadXml(读取);

返回ds;

}

#结束区域

#地区更新可扩展标记语言节点内容

/**//**************************************************

* 函数名称:XmlNodeReplace(字符串xmlPath,字符串节点,字符串内容)

* 功能说明:更新可扩展标记语言节点内容

* 参数:xmlPath:xml文档路径;节点:当前节点的路径;内容:内容

* 使用示列:

*使用欧共体;//引用命名空间

* string xmlPath=Server .MapPath('/EBDomainConfig/domain config。XML’);//获取可扩展标记语言路径

* XmlObject .XmlNodeReplace(xmlPath,' root/test ',' 56789 ');//更新节点内容

************************************************/

/**////摘要

///更新可扩展标记语言节点内容

////摘要

///param name='xmlPath'xml路径/param

///param name='Node '要更换内容的节点:节点路径根节点/父节点/当前节点/param

///param name='Content '新的内容/param

公共静态void XmlNodeReplace(字符串xmlPath,字符串节点,字符串内容)

{

XML document objxml doc=new XML document();

objXmlDoc .加载(XML路径);

objXmlDoc .选择单一节点(节点)。InnerText=内容;

objXmlDoc .保存(XML路径);

}

#结束区域

#地区删除可扩展标记语言节点和此节点下的子节点

/**//**************************************************

* 函数名称:XmlNodeDelete(字符串xmlPath,字符串节点)

* 功能说明:删除可扩展标记语言节点和此节点下的子节点

* 参数:xmlPath:xml文档路径;节点:当前节点的路径;

* 使用示列:

*使用欧共体;//引用命名空间

* string xmlPath=Server .MapPath('/EBDomainConfig/domain config。XML’);//获取可扩展标记语言路径

* XmlObject .XmlNodeDelete(xmlPath,' root/test ');//删除当前节点

************************************************/

/**////摘要

///删除可扩展标记语言节点和此节点下的子节点

////摘要

///param name='xmlPath'xml文档路径/param

///param name='Node '节点路径/param

公共静态void xmlnode删除(字符串XML路径,字符串节点)

{

XML document objxml doc=new XML document();

objXmlDoc .加载(XML路径);

字符串主节点=节点.子串(0,节点LastIndexOf('/');

objXmlDoc .选择单一节点(主节点)。RemoveChild(objXmlDoc .SelectSingleNode(Node));

objXmlDoc .保存(XML路径);

}

#结束区域

#地区插入一个节点和此节点的子节点

/**//**************************************************

* 函数名称:XmlInsertNode(字符串xmlPath,字符串邮件节点,字符串子节点,字符串元素,字符串内容)

* 功能说明:插入一个节点和此节点的字节点

* 参数:xmlPath:xml文档路径;邮件节点:当前节点的路径;子节点:新插入的节点;元素:插入节点的子节点;内容:子节点的内容

* 使用示列:

*使用欧共体;//引用命名空间

* string xmlPath=Server .MapPath('/EBDomainConfig/domain config。XML’);//获取可扩展标记语言路径

* XmlObject .XmlInsertNode(xmlPath,' root/test ',' test1 ',' test2 ','测试内容');//插入一个节点和此节点的字节点

* 生成的可扩展标记语言格式为

*测试

*测试一

*测试2测试内容/test2

*/测试一

*/测试

************************************************/

/**////摘要

///插入一个节点和此节点的子节点

////摘要

///param name='xmlPath'xml路径/param

///param name='MailNode '当前节点路径/param

///param name='ChildNode '新插入节点/param

///param name='Element '插入节点的子节点/param

///param name='Content '子节点的内容,已经应用CDATA/param

公共静态void XmlInsertNode(字符串xmlPath、字符串邮件节点,字符串子节点,字符串元素、字符串内容)

{

XML document objxml doc=new XML document();

objXmlDoc .加载(XML路径);

XmlNode objRootNode=objXmlDoc .SelectSingleNode(MailNode);

XML元素objChildNode=objXmlDoc .CreateElement(子节点);

objRootNode .AppendChild(objChildNode);

XmlElement objElement=objXmlDoc .创建元素(元素);

XmlCDataSection xcds=objXmlDoc .CreateCDataSection(内容);

对象元素AppendChild(xcds);

objChildNode .AppendChild(obj元素);

objXmlDoc .保存(XML路径);

}

#结束区域

#地区插入一节点,带一属性

/**//**************************************************

* 函数名称:XmlInsertElement(字符串xmlPath,字符串主节点,字符串元素,字符串属性,字符串属性内容,字符串内容)

* 功能说明:插入一节点,带一属性

* 参数:xmlPath:xml文档路径;邮件节点:当前节点的路径;元素:新插入的节点;属性:属性名称;属性内容:属性值;内容:节点的内容

* 使用示列:

*使用欧共体;//引用命名空间

* string xmlPath=Server .MapPath('/EBDomainConfig/domain config。XML’);//获取可扩展标记语言路径

* XmlObject .XmlInsertElement(xmlPath,' root/test ',' test1 ',' Attrib ','属性值', '节点内容');//插入一节点,带一属性

* 生成的可扩展标记语言格式为

*测试

* test1 Attrib='属性值'节点内容/test1

*/测试

************************************************/

/**////摘要

///插入一节点,带一属性

////摘要

///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

公共静态void XmlInsertElement(字符串xmlPath,字符串主节点,字符串元素,字符串属性,字符串属性内容,字符串内容)

{

XML document objxml doc=new XML document();

objXmlDoc .加载(XML路径);

XmlNode objNode=objXmlDoc .选择单一节点(主节点);

XmlElement objElement=objXmlDoc .创建元素(元素);

对象元素SetAttribute(Attrib,Attrib内容);

对象元素InnerText=内容;

目标.AppendChild(obj元素);

objXmlDoc .保存(XML路径);

}

#结束区域

#地区插入一节点不带属性

/**//**************************************************

* 函数名称:XmlInsertElement(字符串xmlPath,字符串主节点,字符串元素,字符串内容)

* 功能说明:插入一节点不带属性

* 参数:xmlPath:xml文档路径;邮件节点:当前节点的路径;元素:新插入的节点;内容:节点的内容

* 使用示列:

*使用欧共体;//引用命名空间

* string xmlPath=Server .MapPath('/EBDomainConfig/domain config。XML’);//获取可扩展标记语言路径

* XmlObject .XmlInsertElement(xmlPath,' root/test ',' text1 ','节点内容');//插入一节点不带属性

* 生成的可扩展标记语言格式为

*测试

*文本一节点内容/text1

*/测试

************************************************/

公共静态void XmlInsertElement(字符串xmlPath,字符串主节点,字符串元素,字符串内容)

{

XML document objxml doc=new XML document();

objXmlDoc .加载(XML路径);

XmlNode objNode=objXmlDoc .选择单一节点(主节点);

XmlElement objElement=objXmlDoc .创建元素(元素);

对象元素InnerText=内容;

目标.AppendChild(obj元素);

objXmlDoc .保存(XML路径);

}

#结束区域

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

private bool _ already dispose=false;

私有XML文档XML doc=new XML document();

私有XmlNode xmlNode

私有XmlElement xmlElem

#地区构造与释构

公共XmlHelper()

{

}

~XmlHelper()

{

dispose();

}

受保护的虚拟void Dispose(bool isDisposing)

{

if (_alreadyDispose)返回;

if (isDisposing)

{

//

}

_ alreadyDispose=true

}

#结束区域

#区域IDisposable成员

公共void Dispose()

{

处置(真);

GC .抑制finalize(这个);

}

#结束区域

#地区创建可扩展标记语言文档

/**//**************************************************

* 对象名称:XmlObject

* 功能说明:创建可扩展标记语言文档

* 使用示列:

*使用欧共体;//引用命名空间

* string xmlPath=Server .MapPath(' test。XML’);

* XML object obj=new XML object();

* 创建根节点

*目标CreateXmlRoot(" root ");

* //创建空节点

* //obj .CreatXmlNode('根','节点');

* //创建一个带值的节点

* //obj .CreatXmlNode('root ',' Node ','带值的节点');

* //创建一个仅带属性的节点

* //obj .CreatXmlNode('root ',' Node ',' Attribe ','属性值');

* //创建一个仅带两个属性值的节点

* //obj .CreatXmlNode('root ',' Node ',' Attribe ','属性值,'属性2 ','属性值2');

* //创建一个带属性值的节点值的节点

* //obj .CreatXmlNode('root ',' Node ',' Attribe ','属性值','节点值');

* //在当前节点插入带两个属性值的节点

*目标CreatXmlNode('root ',' Node ',' Attribe ','属性值,'属性2 ','属性值2','节点值');

*目标. XML保存(XML路径);

*目标dispose();

************************************************/

#地区创建一个只有声明和根节点的可扩展标记语言文档

/**////摘要

///创建一个只有声明和根节点的可扩展标记语言文档

////摘要

///param name='root'/param

public void CreateXmlRoot(字符串根)

{

//加入可扩展标记语言的声明段落

xmlNode=xmlDoc .CreateNode(XmlNodeType .XmlDeclaration,'',' ');

xmlDoc .AppendChild(xmlNode);

//加入一个根元素

xmlElem=xmlDoc .CreateElement(",root,");

xmlDoc .AppendChild(XML elem);

}

#结束区域

#地区在当前节点下插入一个空节点节点

/**////摘要

///在当前节点下插入一个空节点节点

////摘要

///param name='mainNode '当前节点路径/param

///param name='node '节点名称/param

public void CreatXmlNode(string mainNode,string node)

{

XmlNode MainNode=xmlDoc .选择单一节点(主节点);

XmlElement objElem=xmlDoc .创建元素(节点);

主节点AppendChild(objElem);

}

#结束区域

#地区在当前节点插入一个仅带值的节点

/**////摘要

///在当前节点插入一个仅带值的节点

////摘要

///param name='mainNode '当前节点/param

///param name='node '新节点/param

///param name='content '新节点值/param

公共void CreatXmlNode(字符串主节点,字符串节点,字符串内容)

{

XmlNode MainNode=xmlDoc .选择单一节点(主节点);

XmlElement objElem=xmlDoc .创建元素(节点);

目标.InnerText=内容;

主节点AppendChild(objElem);

}

#结束区域

#地区在当前节点的插入一个仅带属性值的节点

/**////摘要

///在当前节点的插入一个仅带属性值的节点

////摘要

///param name='MainNode '当前节点或路径/param

///param name='Node '新节点/param

///param name='Attrib '新节点属性名称/param

///param name='AttribValue '新节点属性值/param

public void CreatXmlNode(字符串主节点,字符串节点,字符串属性,字符串属性值)

{

XmlNode mainNode=xmlDoc .选择单一节点(主节点);

XmlElement objElem=xmlDoc .创建元素(节点);

目标.SetAttribute(Attrib,AttribValue);

主节点AppendChild(objElem);

}

#结束区域

#地区创建一个带属性值的节点值的节点

/**////摘要

///创建一个带属性值的节点值的节点

////摘要

///param name='MainNode '当前节点或路径/param

///param name='Node '节点名称/param

///param name='Attrib '属性名称/param

///param name='AttribValue '属性值/param

///param name='Content '节点传情/param

公共void CreatXmlNode(字符串主节点,字符串节点,字符串属性,字符串属性值,字符串内容)

{

XmlNode mainNode=xmlDoc .选择单一节点(主节点);

XmlElement objElem=xmlDoc .创建元素(节点);

目标.SetAttribute(Attrib,AttribValue);

目标.InnerText=内容;

主节点AppendChild(objElem);

}

#结束区域

#地区在当前节点的插入一个仅带2个属性值的节点

/**////摘要

///在当前节点的插入一个仅带2个属性值的节点

////摘要

///param name='MainNode '当前节点或路径/param

///param name='Node '节点名称/param

///param name='Attrib '属性名称一/param

///param name='AttribValue '属性值一/param

///param name='Attrib2 '属性名称二/param

///param name='AttribValue2 '属性值二/param

public void CreatXmlNode(字符串主节点,字符串节点,字符串属性,字符串属性值,字符串属性2,字符串属性值2)

{

XmlNode mainNode=xmlDoc .选择单一节点(主节点);

XmlElement objElem=xmlDoc .创建元素(节点);

目标.SetAttribute(Attrib,AttribValue);

目标.SetAttribute(Attrib2,attrib value 2);

主节点AppendChild(objElem);

}

#结束区域

#地区在当前节点插入带两个属性的节点

/**////摘要

///在当前节点插入带两个属性的节点

////摘要

///param name='MainNode '当前节点或路径/param

///param name='Node '节点名称/param

///param name='Attrib '属性名称一/param

///param name='AttribValue '属性值一/param

///param name='Attrib2 '属性名称二/param

///param name='AttribValue2 '属性值二/param

///param name='Content '节点值/param

公共void CreatXmlNode(字符串主节点,字符串节点,字符串属性,字符串属性值,字符串属性2,字符串属性值2,字符串内容)

{

XmlNode mainNode=xmlDoc .选择单一节点(主节点);

XmlElement objElem=xmlDoc .创建元素(节点);

目标.SetAttribute(Attrib,AttribValue);

目标.SetAttribute(Attrib2,attrib value 2);

目标.InnerText=内容;

主节点AppendChild(objElem);

}

#结束区域

#地区保存可扩展标记语言

/**////摘要

///保存可扩展标记语言

////摘要

///param name='path '保存的当前路径/param

公共void XmlSave(字符串路径)

{

xmlDoc .保存(路径);

}

#结束区域

#结束区域

#地区根据父节点属性值读取子节点值

/**//**************************************************

* 函数名称:GetSubElementByAttribute(字符串XML路径,字符串FatherElenetName,字符串AttributeName,int AttributeIndex,int ArrayLength)

* 功能说明:根据父节点属性值读取子节点值

* 参数:XmlPath:xml路径;父亲网络名:父节点名;AttributeName:属性值;属性索引:属性索引;数组长度:要返回的节点数组长度

* 适应用Xml:

* ArrayList al=new ArrayList();

* al=欧共体.XML对象。GetSubElementByAttribute(XML路径,' page ','/index.aspx ',0,3);

* for(int I=0;我是艾尔。数数;我)

* {

*回应。写(美国)的.ToString());

*回应。写(' br ');

* }

************************************************/

/**////摘要

///根据父节点属性读取字节点值

////摘要

///param name='XmlPath'xml路径/param

///param name='FatherElenetName '父节点名/param

///param name='AttributeName '属性值/param

///param name='AttributeIndex '属性索引/param

///param name='ArrayLength '要返回的节点数组长度/param

///返回/返回

公共静态系统收藏。ArrayList GetSubElementByAttribute(string XML path,string FatherElenetName,string AttributeName,int AttributeIndex,int ArrayLength)

{

系统。数组列表al=新系统收藏。ArrayList();

XML文档doc XML=new XML document();

docXml .load(@ XML path);

XmlNodeList xn=docXml .DocumentElement。子节点

//遍历第一层节点

foreach(xn中的XmlElement元素)

{

//判断父节点是否为指定节点

如果(元素. Name==FatherElenetName)

{

//判断父节点属性的索引是否大于指定索引

如果(元素属性。数数属性索引)

返回空

//判断父节点的属性值是否等于指定属性

如果(元素。属性[属性索引].值==属性名)

{

XmlNodeList xx=element .子节点;

如果(xx .计数0)

{

for(int I=0;我的长度是xx .数数;我)

{

艾尔。添加(xx[i]。InnerText);

}

}

}

}

}

返回al;

}

#结束区域

#地区根据节点属性读取子节点值(较省资源模式)

/**//**************************************************

* 函数名称:GetSubElementByAttribute(字符串XML路径,字符串父元素,字符串属性名称,字符串属性值,int数组长度)

* 功能说明:根据父节点属性值读取子节点值

* 参数:XmlPath:xml路径;父亲网络名:父节点名;AttributeName:属性名;属性值:属性值;数组长度:要返回的节点数组长度

* 适应用Xml:

* ArrayList al=n

ew ArrayList(); * al = EC.XmlObject.GetSubElementByAttribute(XmlPath, "page", "@name", "/index.aspx", 3); * for (int i = 0; i < al.Count; i++) * { * Response.Write(al[i].ToString()); * Response.Write("<br>"); * } ************************************************/ /**//// <summary> /// 根据节点属性读取子节点值(较省资源模式) /// </summary> /// <param name="XmlPath">xml路径</param> /// <param name="FatherElement">父节点值</param> /// <param name="AttributeName">属性名称</param> /// <param name="AttributeValue">属性值</param> /// <param name="ArrayLength">返回的数组长度</param> /// <returns></returns> public static System.Collections.ArrayList GetSubElementByAttribute(string XmlPath, string FatherElement, string AttributeName, string AttributeValue, int ArrayLength) { System.Collections.ArrayList al = new System.Collections.ArrayList(); XmlDocument docXml = new XmlDocument(); docXml.Load(@XmlPath); XmlNodeList xn; xn = docXml.DocumentElement.SelectNodes("//" + FatherElement + "[" + @AttributeName + "='" + AttributeValue + "']"); XmlNodeList xx = xn.Item(0).ChildNodes; for (int i = 0; i < ArrayLength & i < xx.Count; i++) { al.Add(xx.Item(i).InnerText); } return al; } #endregion } }

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 设计一个简单的C#控制台应用程序,C#控制台程序,C# 创建控制台应用程序
  • 深入解析windows第8版,深入解析C#(第4版)
  • 数组代码,c# 数组操作,C# 数组实例介绍(图文)
  • 学会C#要多久,学会c#要多久,c#学习之30分钟学会XAML
  • 回溯法01背包问题c,回溯法求解01背包问题伪代码,C#使用回溯法解决背包问题实例分析
  • xml文件转义字符,xml转意字符,C# XML中的转义字符操作
  • winform 进度条控件,c# 进度条使用
  • winform 进度条控件,c# 进度条使用,C#使用winform实现进度条效果
  • winform backgroundworker,c# isbackground
  • winform backgroundworker,c# isbackground,C# BackgroundWorker用法详解
  • lua与c#交互,lua c#
  • lua与c#交互,lua c#,ToLua框架下C#与Lua代码的互调操作
  • linq c#,linq原理 c#
  • linq c#,linq原理 c#,c#中LINQ的基本用法实例
  • java decimal保留两位小数,sql中decimal函数保留2位小数,C#中decimal保留2位有效小数的实现方法
  • 留言与评论(共有 条评论)
       
    验证码: