C# 对XML基本操作包括读取节点的数据,添加节点。读取节点属性,修改节点属性等。具体如下:

XML文件:文件在MyDocument文件夹下

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <PersonF xmlns="" Name="(test)work hard work smart!">
  3. <person Name="Person1">
  4. <ID>1</ID>
  5. <Name>XiaoA</Name>
  6. <Age>59</Age>
  7. </person>
  8. <person Name="Person2">
  9. <ID>2</ID>
  10. <Name>XiaoB</Name>
  11. <Age>29</Age>
  12. </person>
  13. <person Name="Person3">
  14. <ID>3</ID>
  15. <Name>XiaoC</Name>
  16. <Age>103</Age>
  17. </person>
  18. <person Name="Person4">
  19. <ID>4</ID>
  20. <Name>XiaoD</Name>
  21. <Age>59</Age>
  22. </person>
  23. </PersonF>

  

Code:说明都在注释里。

  1. public void TestXML()
  2. {
  3. XmlDocument doc = new XmlDocument();
  4. string path = "http://www.cnblogs.com/MyDocument/Person.xml";
  5. try
  6. {
  7.  
  8. //doc.Load(Server.MapPath()
  9. doc.Load(path);
  10.  
  11. //1、读取单个节点的数据
  12. XmlNode node = doc.SelectSingleNode("PersonF");
  13.  
  14. //2、读取多个节点的数据
  15. XmlNodeList nodeList1 = doc.SelectNodes("PersonF/person");
  16.  
  17. //3.1 读取具体节点的具体值 如:属性为Person2的第二个节点Name的InnerText
  18. XmlNodeList nodeList = doc.DocumentElement.GetElementsByTagName("person");
  19. foreach (XmlNode node2 in nodeList1) //当然也能用nodeList的值
  20. {
  21. if (node2.Attributes["Name"].InnerText == "Person2")
  22. {
  23. Console.WriteLine(node2.ChildNodes[1].InnerText);
  24.  
  25. }
  26. }
  27.  
  28. //3.2 读取ID为2所在的节点第二个子节点Name的InnerText
  29. XmlNode node3 = doc.SelectSingleNode("PersonF/person[ID=2]");
  30. string strNode3 = node3.ChildNodes[1].InnerText;
  31.  
  32. //3.3利用下面的方法可以找到ID为2的节点
  33. XmlNodeList nodeList2 = doc.SelectNodes("//person//ID");
  34. XmlNode node4 = null;
  35. foreach (XmlNode node5 in nodeList2)
  36. {
  37. if (node5.InnerText == "2")
  38. {
  39. node4 = node5;
  40. break;
  41. }
  42. }
  43. Console.WriteLine(node4.InnerText);
  44.  
  45. //4、读取节点的属性
  46. string Name = node.Attributes["Name"].InnerText;
  47.  
  48. //5 修改节点的属性
  49. node.Attributes["Name"].InnerText = "work hard work smart!";
  50. doc.Save(path);
  51.  
  52. //6 添加自定义的节点
  53. XmlTextReader reader = new XmlTextReader(path);
  54. XmlElement root = doc.DocumentElement;//获取根节点
  55. XmlElement tagOuter = doc.CreateElement("person");
  56. //设置节点属性
  57. tagOuter.SetAttribute("Name", "Person5");
  58. XmlElement tagIN_Name = doc.CreateElement("Name");
  59. XmlElement tagIN_ID = doc.CreateElement("ID");
  60. tagIN_Name.InnerText = "work hard work smart!";
  61. tagIN_ID.InnerText = "32";
  62. tagOuter.AppendChild(tagIN_Name);
  63. tagOuter.AppendChild(tagIN_ID);
  64. root.AppendChild(tagOuter);//添加tagOuter到XML文件的最后
  65. reader.Close();
  66. doc.Save(path);
  67. }
  68. catch (System.Exception e)
  69. {
  70. throw new Exception(e.Message);
  71. }
  72. }

  

下文是对C#对XML的具体操作

如何完成.Net下XML文档的读写操作

C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍

C#中用SelectSingleNode方法解析带有多个命名空间的XML文件

  

原文链接:http://www.cnblogs.com/linlf03/archive/2011/10/10/2205896.html

C# 对XML基本操作总结的更多相关文章

  1. boost::xml——基本操作以及中文乱码解决方案

    下面是本人使用boost库的xml部分的基础操作,并且解决对于大家使用boost库读写中文xml内容出现的乱码问题. 1.实现boost库xml基本操作2.解决boost对xml中中文乱码问题3.实现 ...

  2. boost::xml——基本操作以及中文乱码解决方案 (续)

    本博文主要想说明以下两点: 1.对于上一篇的<boost::xml——基本操作以及中文乱码解决方案>解释,这篇博文基本解决了正确输入输出中英文问题,但是好像还没有解决修改中文出现乱码的问题 ...

  3. xml基本操作和保存配置文件应用实例

    引言:在实际项目中遇到一些关于xml操作的问题,被逼到无路可退的时候终于决定好好研究xml一番.本文首先介绍了xml的基本操作,后面写了一个经常用到的xml保存配置文件的实例. xml常用方法: 定义 ...

  4. xml基本操作

    在实际项目中遇到一些关于xml操作的问题,被逼到无路可退的时候终于决定好好研究xml一番.xml是一种可扩展标记语言,可跨平台进行传输,因此xml被广泛的使用在很多地方. 本文由浅入深,首先就xml的 ...

  5. linq to xml 基本操作

    使用XDocument类来进行简单的xml操作,用于软件参数的设置保存. using System; using System.Collections.Generic; using System.Li ...

  6. LINQ to XML基本操作

    Linq to XML同样是对原C#访问XML文件的方法的封装,简化了用xpath进行xml的查询以及增加,修改,删除xml元素的操作. LINQ to XML 三个最重要类:XElement.XAt ...

  7. linq to xml学习

    http://www.cnblogs.com/greatverve/archive/2010/07/09/linq-to-xml-add-delete-update-query.html 记录一下,别 ...

  8. JAVA中通过Jaxp操作XML文件基础

    Java中有多种方式操作XML文件,目前讲一讲以SUN公司提供的DocumentBuilderFactory工厂类对象操作XML. 使用XML基本操作就是需要CRUD(增删改查),那么首先通过一个查询 ...

  9. 【原创】日志文件清理工具V1.0

    最近公司的系统服务器经常出现磁盘空间不足的情况,登陆服务器发现原来是公司的HR系统日志造成的(插个话题:我们公司的HR系统都实施两年多了还没上线,且不说软件功能如何,服务太TMD差劲了,更可气的是软件 ...

随机推荐

  1. 【思路题】【多校第一场】【1001.OO’s Sequence】

    题目大意: 给你一个序列A,f(l,r) 表示 在[l,r]中 的Ai 对于每一个数Aj 都有 Ai%Aj!=0  的数目(  i!=j  ) 卡了一段时间..... 题解 简单题 定义两个数组L[i ...

  2. Paxos算法深入分析

    在分布式系统设计领域,Paxos可谓是最重要一致性的算法.Google的大牛们称   All working protocols for asynchronous consensus we have ...

  3. PHP学习笔记十三【二维数组】

    <?php //二维数组 $arr=array(array(1,2,3),array(4,5,6)); $arr1[0]=array(12,34,65); $arr1[1]=array(34,6 ...

  4. PHP搭建(windows64+apache2.4.7+mysql-5.6+php5.5)

    现在大部分一键安装包多是32位的,并不支持64位,直接在64位的系统上使用会报错的,所以我这里就来说说windows 64位系统如何建立Apache+PHP+MySQL环境的! 我这里演示用的wind ...

  5. HTML5图形绘制学习(1)-- Canvas 元素简介

    Canvas元素是HTML5中新增的一个专门用来进行图形绘制的元素.和其名称Canvas一样,它就相当于一个画布,我们可以在其上描绘各种图形. 这里所说的绘制图型,不是指我们可以进行可视化的图形绘制, ...

  6. 构建混合云:配置Azure site to site VPN连接(1)

      用户在构建自己云计算解决方案的时候,往往会选择私有云或者公有云来做部署,但在一些场景下,用户更加希望通过混合云的方案来满足自己的业务需求.Azure为混合云的部署提供多种不同的连接方案,最常见的是 ...

  7. 第3.3.4节 创建高级图形之RenderScript(二)

        Android视图框架对于创建复杂布局非常方便.然而,这种便利是以性能为代价的.当性能至关重要的时候,Android提供了几种更强大的图形处理能力,当然难度也是随之上升了.在本节中,我将介绍: ...

  8. __stdcall,__cdecl,_cdecl,_stdcall,。__fastcall,_fastcall 区别简介

    1. 今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter); 不解为什么要用WINAPI宏定义,查 ...

  9. [x-means] 1.x-means简介

    本文基于<X-means>和<BIC-notes>(原论文中BIC公式有误,这是对BIC的补充) K-means的缺点 每一轮迭代的计算花费大 需要用户指定K 易于收敛到局部最 ...

  10. firefox必备扩展

    1.首先,当然要推荐 Adblock Plus 安装地址:https://adblockplus.org/zh_CN/firefox 作用:屏蔽广告,从此和该死的广告说拜拜吧(不论是百度推广,还是别的 ...