设为首页
加入收藏
联系我们
首页 基础教程 技术文档 实例分析 数 据 库 疑难杂症 ASP.NET 七夕许愿树 技术论坛
最新文章
  .NET上传图片加文字…
 在vs.net bate…
 C#中利用正则表达式实现…
 Visual C#的SQ…
 关于使用存储过程创建分页
 通用分页显示查询存储过程
 大数据量的分页
 什么是web.confi…
 ASP.NET 配置文件…
 对“三层结构”的深入理解…
 多个关键字的查询问题
 VB和C# 语法对比图 …
 C#基础全接触
 用C#压缩和修复Acce…
 C#中的类型相等与恒等(…
推荐文章
 关于C#中的REF和黓认…
 读书笔记c#高级编程 委…
 【算法】C#快速排序类
 Visual C#的SQ…
 C#中调用API
 Infragistics…
 C#接口转换
 C#读取设备信息
 用.net操作word
 C# MessageBo…
 Visual C#中的数…
 雅虎公司C#笔试题,看看…
 C#.NET使用NHib…
 .net学习之运算符重载…
 Visual C# 3.…
热门文章
 ADO.Net与ADO在…
 开发ASP.NET下的M…
 用C#+XMI技术进行U…
 什么是虚拟机?
 C#基础全接触
 C#中利用正则表达式实现…
 雅虎公司C#笔试题,看看…
 用Visual C# 2…
 C#学习第一天
 C#语言初级入门(1)
 VB和C# 语法对比图 …
 远程重启计算机(C#)
 什么是B/S三层?
 Visual C#的SQ…
 Visual C#常用函…
C#中XML的基本操作
阅读正文 文字大小:增大 减小  文字行距:增大 减小   双击自动滚屏
本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程.

已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?><bookstore>  <book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>  </book></bookstore>

1、往<bookstore>节点中插入一个<book>节点:
XmlDocument xmlDoc=new XmlDocument( );
xmlDoc.Load( "bookstore.xml" );
XmlNode root=xmlDoc.SelectSingleNode( "bookstore" );
//查找<bookstore>
XmlElement xe1=xmlDoc.CreateElement( "book" );
//创建一个<book>节点
xe1.SetAttribute( "genre","李赞红" );
//设置该节点genre属性
xe1.SetAttribute( "ISBN","2-3631-4" );
//设置该节点ISBN属性

XmlElement xesub1=xmlDoc.CreateElement( "title" );
xesub1.InnerText="CS从入门到精通";
//设置文本节点
xe1.AppendChild( xesub1 );
//添加到<book>节点中
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 );
//添加到<bookstore>节点中
xmlDoc.Save( "bookstore.xml" );
//===============================================
结果为:
<?xml version="1.0" encoding="gb2312"?><bookstore>  <book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>  </book>  <book genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</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 xn1 in nls )//遍历
        {
            XmlElement xe2=( XmlElement )xn1;
            //转换类型
            if( xe2.Name=="author" )//如果找到
            {
                xe2.InnerText="亚胜";
                //则修改
                break;
                //找到退出来就可以了
            }
        }
        break;
    }
}

xmlDoc.Save( "bookstore.xml" );
//保存.
//==================================================
最后结果为:
<?xml version="1.0" encoding="gb2312"?><bookstore>  <book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>  </book>  <book genre="update李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>亚胜</author>
<price>58.3</price>  </book></bookstore>

3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点.
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="1.0" encoding="gb2312"?><bookstore>  <book ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</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 xnf1=xe.ChildNodes;
    foreach( XmlNode xn2 in xnf1 )
    {
        Console.WriteLine( xn2.InnerText );
        //显示子节点点文本
    }
}



本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

中国C#技术交流QQ群:6337034  10976424  9383681  35248582  35248645
版权所有:中国C#技术学习中心 Copyright © 20010-20012
建议浏览分辨率使用:1024*768分辨率
粤ICP备05002251号