在C#.net中如何操作XML

需要添加的命名空间:

using System.Xml;

定义几个公共对象:

XmlDocument xmldoc ;

XmlNode xmlnode ;

XmlElement xmlelem ;

1,创建到服务器同名目录下的xml文件:

方法一:

xmldoc = new XmlDocument ( ) ;

//加入XML的声明段落

xmlnode = xmldoc.CreateNode ( XmlNodeType.XmlDeclaration , "" , "" ) ;

xmldoc.AppendChild ( xmlnode ) ;

//加入一个根元素

xmlelem = xmldoc.CreateElement ( "" , "Employees" , "" ) ;

xmldoc.AppendChild ( xmlelem ) ;

//加入另外一个元素

for(int i=1;i<3;i )

{

XmlNode root=xmldoc.SelectSingleNode("Employees");//查找<Employees>

XmlElement xe1=xmldoc.CreateElement("Node");//创建一个<Node>节点

xe1.SetAttribute("genre","李赞红");//设置该节点genre属性

xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性

XmlElement xesub1=xmldoc.CreateElement("title");

xesub1.InnerText="CS从入门到精通";//设置文本节点

xe1.AppendChild(xesub1);//添加到<Node>节点中

XmlElement xesub2=xmldoc.CreateElement("author");

xesub2.InnerText="候捷";

xe1.AppendChild(xesub2);

XmlElement xesub3=xmldoc.CreateElement("price");

xesub3.InnerText="58.3";

xe1.AppendChild(xesub3);

root.AppendChild(xe1);//添加到<Employees>节点中

}

//保存创建好的XML文档

xmldoc.Save ( Server.MapPath("data.xml") ) ;

//

结果:在同名目录下生成了名为data.xml的文件,内容如下,

<?xml version="1.0"?>

<Employees>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

</Employees>

方法二:

XmlTextWriter xmlWriter;

string strFilename = Server.MapPath("data1.xml") ;

xmlWriter = new XmlTextWriter(strFilename,Encoding.Default);//创建一个xml文档

xmlWriter.Formatting = Formatting.Indented;

xmlWriter.WriteStartDocument();

xmlWriter.WriteStartElement("Employees");

xmlWriter.WriteStartElement("Node");

xmlWriter.WriteAttributeString("genre","李赞红");

xmlWriter.WriteAttributeString("ISBN","2-3631-4");

xmlWriter.WriteStartElement("title");

xmlWriter.WriteString("CS从入门到精通");

xmlWriter.WriteEndElement();

xmlWriter.WriteStartElement("author");

xmlWriter.WriteString("候捷");

xmlWriter.WriteEndElement();

xmlWriter.WriteStartElement("price");

xmlWriter.WriteString("58.3");

xmlWriter.WriteEndElement();

xmlWriter.WriteEndElement();

xmlWriter.Close();

//

结果:

<?xml version="1.0" encoding="gb2312"?>

<Employees>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

</Employees>

2,添加一个结点:

XmlDocument xmlDoc=new XmlDocument();

xmlDoc.Load(Server.MapPath("data.xml"));

XmlNode root=xmlDoc.SelectSingleNode("Employees");//查找<Employees>

XmlElement xe1=xmlDoc.CreateElement("Node");//创建一个<Node>节点

xe1.SetAttribute("genre","张三");//设置该节点genre属性

xe1.SetAttribute("ISBN","1-1111-1");//设置该节点ISBN属性

XmlElement xesub1=xmlDoc.CreateElement("title");

xesub1.InnerText="C#入门帮助";//设置文本节点

xe1.AppendChild(xesub1);//添加到<Node>节点中

XmlElement xesub2=xmlDoc.CreateElement("author");

xesub2.InnerText="高手";

xe1.AppendChild(xesub2);

XmlElement xesub3=xmlDoc.CreateElement("price");

xesub3.InnerText="158.3";

xe1.AppendChild(xesub3);

root.AppendChild(xe1);//添加到<Employees>节点中

xmlDoc.Save ( Server.MapPath("data.xml") );

//

结果:在xml原有的内容里添加了一个结点,内容如下,

<?xml version="1.0"?>

<Employees>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

<Node genre="张三" ISBN="1-1111-1">

<title>C#入门帮助</title>

<author>高手</author>

<price>158.3</price>

</Node>

</Employees>

3,修改结点的值(属性和子结点):

XmlDocument xmlDoc=new XmlDocument();

xmlDoc.Load( Server.MapPath("data.xml") );

XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点

foreach(XmlNode xn in nodeList)//遍历所有子节点

{

XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型

if(xe.GetAttribute("genre")=="张三")//如果genre属性值为“张三”

{

xe.SetAttribute("genre","update张三");//则修改该属性为“update张三”

XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点

foreach(XmlNode xn1 in nls)//遍历

{

XmlElement xe2=(XmlElement)xn1;//转换类型

if(xe2.Name=="author")//如果找到

{

xe2.InnerText="亚胜";//则修改

}

}

}

}

xmlDoc.Save( Server.MapPath("data.xml") );//保存。

//

结果:将原来的所有结点的信息都修改了,xml的内容如下,

<?xml version="1.0"?>

<Employees>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

<Node genre="update张三" ISBN="1-1111-1">

<title>C#入门帮助</title>

<author>亚胜</author>

<price>158.3</price>

</Node>

</Employees>

4,修改结点(添加结点的属性和添加结点的自结点):

XmlDocument xmlDoc=new XmlDocument();

xmlDoc.Load( Server.MapPath("data.xml") );

XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点

foreach(XmlNode xn in nodeList)

{

XmlElement xe=(XmlElement)xn;

xe.SetAttribute("test","111111");

XmlElement xesub=xmlDoc.CreateElement("flag");

xesub.InnerText="1";

xe.AppendChild(xesub);

}

xmlDoc.Save( Server.MapPath("data.xml") );

//

结果:每个结点的属性都添加了一个,子结点也添加了一个,内容如下,

<?xml version="1.0"?>

<Employees>

<Node genre="李赞红" ISBN="2-3631-4" test="111111">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

<flag>1</flag>

</Node>

<Node genre="李赞红" ISBN="2-3631-4" test="111111">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

<flag>1</flag>

</Node>

<Node genre="update张三" ISBN="1-1111-1" test="111111">

<title>C#入门帮助</title>

<author>亚胜</author>

<price>158.3</price>

<flag>1</flag>

</Node>

</Employees>

5,删除结点中的某一个属性:

XmlDocument xmlDoc=new XmlDocument();

xmlDoc.Load( Server.MapPath("data.xml") );

XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes;

foreach(XmlNode xn in xnl)

{

XmlElement xe=(XmlElement)xn;

xe.RemoveAttribute("genre");//删除genre属性

XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点

foreach(XmlNode xn1 in nls)//遍历

{

XmlElement xe2=(XmlElement)xn1;//转换类型

if(xe2.Name=="flag")//如果找到

{

xe.RemoveChild(xe2);//则删除

}

}

}

xmlDoc.Save( Server.MapPath("data.xml") );

//]

结果:删除了结点的一个属性和结点的一个子结点,内容如下,

<?xml version="1.0"?>

<Employees>

<Node ISBN="2-3631-4" test="111111">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

<Node ISBN="2-3631-4" test="111111">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

<Node ISBN="1-1111-1" test="111111">

<title>C#入门帮助</title>

<author>亚胜</author>

<price>158.3</price>

</Node>

</Employees>

6,删除结点:

XmlDocument xmlDoc=new XmlDocument();

xmlDoc.Load( Server.MapPath("data.xml") );

XmlNode root=xmlDoc.SelectSingleNode("Employees");

XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes;

for(int i=0;i<xnl.Count;i )

{

XmlElement xe=(XmlElement)xnl.Item(i);

if(xe.GetAttribute("genre")=="张三")

{

root.RemoveChild(xe);

if(i<xnl.Count)i=i-1;

}

}

xmlDoc.Save( Server.MapPath("data.xml") );

结果:删除了符合条件的所有结点,原来的内容:

<?xml version="1.0"?>

<Employees>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

<Node genre="张三" ISBN="1-1111-1">

<title>C#入门帮助</title>

<author>高手</author>

<price>158.3</price>

</Node>

<Node genre="张三" ISBN="1-1111-1">

<title>C#入门帮助</title>

<author>高手</author>

<price>158.3</price>

</Node>

</Employees>

删除后的内容:

<?xml version="1.0"?>

<Employees>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

<Node genre="李赞红" ISBN="2-3631-4">

<title>CS从入门到精通</title>

<author>候捷</author>

<price>58.3</price>

</Node>

</Employees>

转载于:https://www.cnblogs.com/liulf/archive/2009/06/09/1499819.html

c#操作xml实例 2009-03-13 20:00相关推荐

  1. html获取xml分页,JavaScript操作XML实例代码(获取新闻标题并分页,并分页)

    具体内容我没有做测试.仅供参考 代码 新闻测试1新闻测试1 新闻测试2新闻测试2 新闻测试3新闻测试3 新闻测试4新闻测试4 新闻测试5新闻测试5 新闻测试6新闻测试6 新闻测试7新闻测试7 新闻测试 ...

  2. JavaScript 操作 XML 实例 (获取新闻标题并分页,并分页)

    XML 代码部分 这是一个新闻的XML 文件,如果 NBody部分包含 XML 和Html 不可识别部分, 就 包含在DATA 表示附中. 具体内容我没有做测试.仅供参考 代码 <? xml v ...

  3. C#操作xml完整类文件

    C#操作xml完整类文件 xml_oper.cs using ...System; using System.Data; using System.Web; using System.Xml; /** ...

  4. 数据库中操作XML(openXML)

    最近公司项目需要在数据库中操作XML,因此系统的学习了一下 一.openxml的格式 OPENXML( idoc int [ in] , XPathnvarchar [ in ] , [ flags ...

  5. Nginx反向绑定域名方法和详细操作应用实例:Google和Gravatar

    2019独角兽企业重金招聘Python工程师标准>>> 反向绑定域名,即将域名B绑定到域名A上,用户只要访问B就等同于进入A,内容都是由A提供,它有点像建立了一个A的镜像.什么时候要 ...

  6. C#操作XML总结1

    C#操作XML总结1 网上很多C#操作XML的文章,但是都是东拼西凑,把简单的问题复杂化,不参考罢了.如若照搬硬套,不但达不到目标,反而浪费时间.原本以前做过操作XML的程序,但是忘了,所以今天下午就 ...

  7. php mysql PDO 查询操作的实例详解

    php mysql PDO 查询操作的实例详解 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  8. C#操作XML方法集合

    原文地址:http://www.cnblogs.com/zery/p/3362480.html 一 前言 先来了解下操作XML所涉及到的几个类及之间的关系  如果大家发现少写了一些常用的方法,麻烦在评 ...

  9. [转]C#操作XML方法详解

    本文转自:http://www.cnblogs.com/minotmin/archive/2012/10/14/2723482.html using System.Xml; //初始化一个xml实例 ...

最新文章

  1. 2022-2028年中国医疗+养老产业深度调研及投资前景预测报告
  2. 构建一个运行在Azure虚拟机上的MySQL Spring Boot应用程序
  3. Sprint(第一天11.14)
  4. vim 多行注释消除注释,多行删除
  5. 从本地上传项目到 github 以及从github 下载项目到本地环境
  6. ERP实施实记(六)之生管课
  7. 知晓云助力小程序开发
  8. 有赞零售财务中台架构设计与实践
  9. 找回密码forget_password
  10. 利用SmsManager发送短信
  11. 转*SqlSever查询某个表的列名称、说明、备注、注释,类型等
  12. 微信开发者工具打开导入其他人的项目源码 修改appid
  13. python爬取高德poi数据_高德地图之python爬取POI数据及其边界经纬度
  14. 计算机维修的税收编码,维修费税收分类编码是多少?
  15. android短信拦截木马,有个木马专门伪装成支付宝 它会窃取支付宝账号密码 通讯录通话记录...
  16. 郑州大学计算机课程表查询,郑州大学研究生课程表
  17. 作为一个程序员对特修斯之船的理解
  18. vue兼容IE 360
  19. openoffice将word转pdf中文乱码或消失的坑
  20. 人为什么要学数学 ——数学意义的哲学思考

热门文章

  1. python constructor_python – 无法成功启动boa-constructor
  2. 开发日记-20190515 关键词 汇编语言(八) MVVM
  3. Intel DAAL AI加速——支持从数据预处理到模型预测,数据源必须使用DAAL的底层封装库...
  4. TCP报文格式和三次握手——三次握手三个tcp包(header+data),此外,TCP 报文段中的数据部分是可选的,在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。...
  5. OpenTSDB介绍——基于Hbase的分布式的,可伸缩的时间序列数据库,而Hbase本质是列存储...
  6. Spark累加器(Accumulator)陷阱及解决办法
  7. stm32非操作系统开发和带uCos的开发的区别,及一些解析
  8. Linux 的面试小题 8
  9. [Linux]学习笔记(4)-su及passwd的用法介绍
  10. [Java拾遗四]JavaWeb基础之Servlet_RequestResponse