1/定义一个XmlDocument对象xDoc
2/通过XmlDocument来load需要读取的xml文件
3/通过XmlDocument的SelectSingleNode来找到节点,并把节点转换为XmlElement
4/XmlElement 可以对节点的属性进行操作

<?xml version="." encoding="gb"?>
  <bookstore>
  <book genre="fantasy" ISBN="--">
  <title>Oberon's Legacy</title>
  <author>Corets, Eva</author>
<price>.</price>
</book>
</bookstore>
 
 
 
 
 
1、往<bookstore>节点中插入一个<book>节点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>

XmlElement xe=xmlDoc.CreateElement("book");//创建一个<book>节点
xe.SetAttribute("genre","李小龙");//设置该节点genre属性
xe.SetAttribute("ISBN","--");//设置该节点ISBN属性
 
XmlElement xesub=xmlDoc.CreateElement("title");
xesub.InnerText="CS从入门到精通";//设置文本节点
xe.AppendChild(xesub);//添加到<book>节点中
XmlElement xesub=xmlDoc.CreateElement("author");
xesub.InnerText="候捷";
xe.AppendChild(xesub);
XmlElement xesub=xmlDoc.CreateElement("price");
xesub.InnerText=".";
xe.AppendChild(xesub);
 
root.AppendChild(xe);//添加到<bookstore>节点中
xmlDoc.Save("bookstore.xml");
 
 
//================
结果为:
 
 
 
 
<?xml version="." encoding="gb"?>
<bookstore>
<book genre="fantasy" ISBN="--">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>.</price>
</book>
<book genre="李小龙" ISBN="--">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>.</price>
</book>
</bookstore>
 
 
 
 
 
2、修改节点:将genre属性值为“李小龙“的节点的genre值改为“update李小龙”,将该节点的子节点<author>的文本修改为“亚胜”。
 
 
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
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 xn in nls)//遍历
{
XmlElement xe=(XmlElement)xn;//转换类型
if(xe.Name=="author")//如果找到
{
xe.InnerText="亚胜";//则修改
break;//找到退出来就可以了
}
}
break;
}
}
 
xmlDoc.Save("bookstore.xml");//保存。
 
 
 

//=================

最后结果为:

<?xml version="." encoding="gb"?>
<bookstore>
<book genre="fantasy" ISBN="--">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>.</price>
</book>
<book genre="update李小龙" ISBN="--">
<title>CS从入门到精通</title>
<author>亚胜</author>
<price>.</price>
</book>
</bookstore>

 

3、删除 <book genre="fantasy" ISBN="--">节点的genre属性,删除 <book genre="update李赞红" ISBN="--">节点。

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

foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;

if(xe.GetAttribute("genre")=="fantasy")
{
xe.RemoveAttribute("genre");//删除genre属性
}
else if(xe.GetAttribute("genre")=="update李小龙")
{
xe.RemoveAll();//删除该节点的全部内容
}
}
xmlDoc.Save("bookstore.xml");

//====================

最后结果为:

<?xml version="." encoding="gb"?>
<bookstore>
<book ISBN="--">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>.</price>
</book>
<book>
</book>
</bookstore>

4、显示所有数据。

XmlNode xn=xmlDoc.SelectSingleNode("bookstore");

XmlNodeList xnl=xn.ChildNodes;

foreach(XmlNode xnf in xnl)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//显示属性值
Console.WriteLine(xe.GetAttribute("ISBN"));

XmlNodeList xnff=xe.ChildNodes;
foreach(XmlNode xn in xnff)
{
Console.WriteLine(xn.InnerText);//显示子节点点文本
}
}

c#读取xml操作的更多相关文章

  1. XML格式示例 与 XML操作(读取)类封装

    header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...

  2. Qt XML读取写入操作

    XML(eXtensible Markup Language,可扩展标记语言)是普通用于数据交换和数据存储的一种多用途文本文件格式: SVG(可标量矢量图形)XML格式,QtSvg模块提供了可用于载入 ...

  3. PHP下进行XML操作(创建、读取)

    PHP下可以使用DOMDocument类对XML或者HTML文件进行读写操作 更为简单的方法使用simpleXML类操作XML DOM节点分为 元素节点 属性节点 值节点 注释节点 根节点(docum ...

  4. java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

    一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...

  5. PowerShell 数组以及XML操作

    PowerShell基础 PowerShell数组操作 将字符串拆分成数据的操作 cls #原始字符串 $str = "abc,def,ghi,mon" #数据定义 #$StrAr ...

  6. 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值

    前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...

  7. C#中常用的读取xml的几种方法(转)

    本文完全来源于http://blog.csdn.net/tiemufeng1122/article/details/6723764,仅作个人学习之用. XML文件是一种常用的文件格式,例如WinFor ...

  8. C#读取XML文件的基类实现

    刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node ...

  9. XML操作类

        using System; using System.Data; using System.IO; using System.Xml; namespace DotNet.Utilities { ...

随机推荐

  1. python学习之pyenv

    我们经常有这种需求: linux系统中既要有python2.xxx,又要有python3.xxx,甚至更极端的情况是,有多个版本的python3.xxx. 如何实现上述需求呢?更新python的话,费 ...

  2. FreeMarker中在list中加入if判断

    例如list中遍历releaseitem,在ri中获取audit的值,如果audit的值为0则表示正在审核中,如果为1则表示审核通过,如果为2则表示未审核. <#list releaseitem ...

  3. java中static变量的声明和初始化

     目录(?)[+] 问题1静态变量如何初始化 问题2JDK如何处理static块 问题3如何看待静态变量的声明 对初始问题的解答 在网上看到了下面的一段代码: public class Test  ...

  4. UI-1-UI入门

    课程要点: 创建一个iOS工程 AppDelegate类 UIKit框架以及UIWindow 在window上添加第一个试图UIView NSTimer(定时器) 创建一个iOS工程 PS:接下来简单 ...

  5. ionic入坑记记录

    0.java1.8安装各种环境的配置 1.没有安装过npm 1.1 安装nodejs自带此物. 1.2 不希望npm install -g都在c盘.设置全局路径 path中是X:\某个文件夹\你的文件 ...

  6. Swift 开源 Linux Ubuntu Install

    Swift 开源了,它现在变成跨平台的了,开源后的 Swift 不止能运行在 MAC 和 iOS 平台,现在也可以运行在 Linux 平台了.swift.org 网站上面提供了在 Linux 上面安装 ...

  7. MySQL - 统计每个月生日的人数

    Person表定义如下: create table person(id int primary key auto_increment, birthday datetime); Person 数据如下: ...

  8. POJ2947 DAZE [Gauss]

    题目是要求建立一个方程组: (mat[1][1]*x[1] + mat[1][2]*x[2] + - + mat[1][n]*x[n])%7 =mat[1][n+1] (mat[2][1]*x[1] ...

  9. c#文件路径的获取

    string fullPath = @"\WebSite1\Default.aspx"; string filename = System.IO.Path.GetFileName( ...

  10. AndroidHttpClient和HttpEntity详解

    AndroidHttpClient结构: public final class AndroidHttpClient extends Object implements HttpClient 前言:这类 ...