• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
在.NET
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
在.NET Framework中轻松处理XML数据(1-2)
软件发布 在.NET Framework中轻松处理XML数据(1-2)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 编程技术 >> XML教程 >> 在.NET Framework中轻松处理XML数据(1-2)

在.NET Framework中轻松处理XML数据(1-2)

添加时间: 2006-5-11 3:28:28  作者: XML教程  阅读次数:86   来源: http://d9soft.com

        XmlReader类

XML阅读器支持一个编程接口,接口用于连接XML文档,“推出”你要的数据。如果你更深入去了解阅读器,你会发现阅读器工作原理类似于我们的桌面应用程序从数据库中取出数据的原理。数据库服务返回一个游标对象,它包含所有查询结果集,并返回指向目标数据集的开始地址的引用。XML阅读器的客户端收到一个指向阅读器实例的引用。该实例提取底层的数据流并把取出的数据呈现为一棵XML树。阅读器类提供只读、向前的游标,你可以用阅读器类提供的方法滚动游标遍历结果集中的每一条数据。

从阅读器中看XML文档不是一个标签文本文件,而是一个序列化的节点集合。它是.NET Framework中的一种特殊的游标模式;在.NET Framework中,你找不到其它的任何一个类似的API函数。

阅读器和XMLDOM分析器有几点不同的地方。XML阅读器是只进的,它没有父、子、祖宗、兄弟节点的概念,而且是只读的。在.NET Framework中,读写XML文档是分为两种完全不同的功能,分别由XmlReader和XmlWriter类来完成。要编辑XML文档,你可以用XMLDOM分析器,或者你自己设计一个类来实现这两种功能。让我们开始分析阅读器的程序功能。

XmlReader是一个抽象类,你可以继承并扩展它的功能。用户程序一般都基于下面的三种类:XmlTextReader、XmlValidatingReader或者 XmlNodeReader类。所有的这些类都有如图一的属性和图二的方法。要注意的是,某些属性的值实际上依赖于实际的某个阅读器类,不同的类与基类可能不同。因此,在图一中每个属性的说明都是以基类为准的。例如,CanResolveEntity属性在XmlValidatingReader类中只返回true;而在其它的阅读器类中它却可以设为false。同样的,在图二中的某些方法的实际返回值对不同的类可能不同。例如,如果节点类型不是元素节点(element node),所有包含Atrributes的方法的返回值类型都是void。

XmlTextReader类用只进,只读的方式快速访问XML数据流。阅读器先验证XML文档是否是格式良好的,如果不是则抛出一个异常。XmlTextReader 检查 DTD 的格式是否良好,但不使用 DTD 对文档进行验证。XmlTextReader通过XML文档的文件名,或它的URL,或者从文件流中载入XML文档,然后快速的处理XML文档数据。如果你需要对文档的数据进行验证,你可以用XmlValidatingReader类。

可以用多种方法创建XmlTextReader类的实例,从硬盘中加载文件,或从URL地址中加载,流(streams)中加载,还有就是从文本中读入XML文档数据:

XmlTextReader reader = new XmlTextReader(file);

注意,所有XmlTextReader类的公共(public)构造函数都要求你指定数据源,数据源可以是stream、文件或者其它。XmlTextReader默认的构造函数是受保护的(protected),所以不能直接使用。像.NET Framework中所有的阅读器类一样(如SqlDataReader类),一旦阅读器对象连接并打开,你就可以用Read方法去访问数据了。开始的时候只能用Read方法把指针移到第一个元素;然后我们可以用Read方法或其它方法(如Skip, MoveToContent和ReadInnerXml)移动指针到下一个节点元素。要处理整个XML文档的内容,可以根据Read方法的返回值用一个循环遍历文档内容,因为Read方法返回一个布尔值,当读到文档的尾节点时,Read方法返回false,否则它返回true。



Figure 3 Outputting an XML Document Node Layout

string GetXmlFileNodeLayout(string file)
{
// 创建一个XmlTextReader类使它指向目标XML文档
XmlTextReader reader = new XmlTextReader(file);

// 循环取出节点的文本并放入到StringWriter对象实例中
StringWriter writer = new StringWriter();
string tabPrefix = "";

while (reader.Read())
{
// 写开始标志,如果节点类型为元素
if (reader.NodeType == XmlNodeType.Element)
{
//根据元素所处节点的深度,加入reader.Depth个tab符,然后把元素名写入到<>中。
tabPrefix = new string('\t', reader.Depth);
writer.WriteLine("{0}<{1}>", tabPrefix, reader.Name);
}
else
{
//写结束标志,如果节点类型为元素
if (reader.NodeType == XmlNodeType.EndElement)
{
tabPrefix = new string('\t', reader.Depth);
writer.WriteLine("{0}", tabPrefix, reader.Name);
}
}
}

// 输出到屏幕
string buf = writer.ToString();
writer.Close();

// 关闭流
reader.Close();

return buf;
}


图三演示了一个简单的用于输出一个给定的XML文档的节点元素的函数。该函数先打开一个XML文档,然后用循环处理XML文档中所有的内容。每次调用Read方法,阅读器的指针都会向下移一个节点。大部分情况下,用Read方法可以处理的元素节点,但有时候,当你从一个节点移动到下一个节点时,可能是在两个不同类型的节点间移动。但是Read方法不能在属性节点之间移动。阅读器的MoveToContent方法可以让指针从头部节点位置跳到第一个内容节点位置。在ProcessingInstruction, DocumentType, Comment, Whitespace和SignificantWhitespace类型节点中也可以用Skip方法移动指针。

 

上下文章:

 

上一篇文章: 在.NET Framework中轻松处理XML数据(1-3) 下一篇文章: 在.NET Framework中轻松处理XML数据(1-1)

相关文章:

  • 王微反击古永锵:数据是参考 赚钱最要紧
  • 轻松消除浏览网页时出现的乱码
  • 六招助你轻松解决QQ无法登录难题
  • 轻轻松松让WindowsXP跑得更快更稳
  • 财付通能轻松缴纳交通罚款

相关软件:

  • 轻松远程控制 2.6
  • DataExplore数据恢复大师 2.8
  • 腾讯QQ IP数据库 1015 纯真版
  • 批量图片处理小助手 V2.1
  • 网络数据包嗅探专家 V2.4
  • 树人学生成绩处理与学籍管理系统 V4.50 初中版

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • XML轻松学习手册(6)XML实例解析...
  • XSL简明教程(1)XSL入门
  • XSL简明教程(2)XSL转换
  • XSL简明教程(3)在客户端的实现
  • XSL简明教程(4)在服务器端的实现
  • XSL简明教程(5)XSL的索引
  • XSL简明教程(5)XSL的索引
  • XSL简明教程(6)XSL过滤和查询
  • XSL简明教程(7)XSL 的控制语句
  • XSL简明教程(7)XSL 的控制语句

XML教程阅读排行

  • XML轻松学习手册(6)XML实例解析...
  • XSL简明教程(1)XSL入门
  • 大话XML(1)XML是什么
  • XML轻松学习手册(2)XML快速入门
  • XML轻松学习手册(1)目录
  • XML轻松学习手册(3)XML概念
  • 大话XML(2)XML和HTML的比较1
  • XML轻松学习手册(5)XML语法
  • XSL简明教程(2)XSL转换
  • 大话XML(2)XML和HTML的比较4

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • VC++之List Box/Check List Box控...
  • 第二章 PowerBuilder 入门之创建新...
  • VC++ List Ctrl控件
  • 第一章 什么是PowerBuilder
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有