- 浏览: 257269 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (293)
- web (1)
- [随笔分类]项目管理 (30)
- [随笔分类]WCF (14)
- 未分类 (1)
- [随笔分类]Linq (4)
- [随笔分类]C#基础 (24)
- 项目 (1)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (8)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (9)
- [随笔分类]Ubuntu (4)
- ASP.Net (1)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (30)
- [随笔分类]ASP.NET MVC (20)
- [随笔分类]ASP.NET (3)
- [随笔分类]程序员厨房 (4)
- [随笔分类]英语学习 (28)
- [网站分类]4.其他技术区 (1)
- [随笔分类]Silverlight (12)
- [随笔分类]CodeSmith (8)
- [随笔分类]其他 (4)
- [随笔分类]Ruby (4)
- [发布至博客园首页] (34)
- [网站分类]其他技术区 (3)
- [随笔分类]Ruby on Rails (2)
- [网站分类].NET新手区 (33)
- [随笔分类]TDD (1)
- [随笔分类]不谈技术 (2)
- [网站分类]非技术区 (7)
最新评论
-
yicone:
You make a mistake when paste t ...
WCF步步为营(一):简单示例 -
jinweijie:
你好,这个实现不错,但是在用了scriptmanager以后就 ...
在服务器端保存ViewState
ASP.NET 2.0 XML 系列(5):用XmlReader读取XML文档
一、使用XmlReader类的步骤如下
(1) 使用XmlReader类的Create()创建该类的一个实例,并将被读取的XML文件名称作为参数传入方法
(2) 建立一个反复调用的Read()方法的循环。这个方法从文件的第一个节点开始,然后读取所有余下的节点,但每次调用只读取一个节点,如果存在一个节点可被读取 则返回True,当到达文件最后时返回False.
(3) 在这个循环中将检查XmlReader对象的属性和方法,以获得当前节点的信息(类型、名称、数据等等),不断地执行该循环知道Read()返回False.
(一)开始读取文档
要开始读取xml文档,你可以调用任意一个Read()方法,如:
<!---->XmlReader reader = XmlReader.Create("Employees.xml");
reader.ReadStartElement();
或者reader.MoveToContent()直接跳至文档内容,如果当前节点不是内容节点(内容节点是CDATA, Element,Entity,EntityReference).如果位于属性上,将会返回至包含该属性的元素。
(二)读取元素
Read(), ReadString(),ReadStartElement(),ReadEndElement()都能读取Element节点。每个方法都调到文档的下一个节点。MovetoElement()只移动到下一个节点而不读取它。
当XmlReader读取文档时,他的状态有可能如下:
成员名称 说明 Closed 已调用 Close 方法。 EndOfFile 已成功到达文件结尾。 Error 出现错误,阻止读取操作继续进行。 Initial 未调用 Read 方法。 Interactive 已调用 Read 方法。可能对读取器调用了其他方法。 (三)读取属性应当先用HasAttributes检查是否有属性,然后可以通过MoveToAttribute(), MoveToFirstAttribute(),MoveToNextAttribute()来访问<!---->XmlReader reader = XmlReader.Create("Employees.xml");
if (reader.HasAttributes)
{
reader.MoveToAttribute("id");
}
(四)读取内容和其他数据
ReadString()读取当前节点内容为字符串,还可以使用ReadElementContentAsXXX(),ReadContentAsXXX可以在当前位置读取文本内容。
该方法返回元素的内容、文本、空白、重要空白或 CDATA 节点。
如果定位在元素上,ReadString 将所有文本、重要的空白、空白和 CDATA 节节点串联在一起,然后将串联在一起的数据作为元素内容返回。当遇到任何标记(包括注释和处理指令)时,它就会停止。这可以在混合内容模型中发生,也可以在读取元素结束标记时发生。
如果定位在元素文本节点上,则 ReadString 执行相同的串联,即从该文本节点到元素结束标记。如果读取器定位在属性文本节点上,则 ReadString 与读取器定位在元素开始标记上时的功能相同。它返回所有串联在一起的元素文本节点。
如果定位在属性上,则 ReadString 将返回空字符串,并将读取器移回到拥有该属性的元素。
如果在任何其他节点类型上调用 ReadString,则它将返回空的字符串并将读取器定位在下一个节点上。
二、实例:
1. 我们先创建一个Employees.xml的文件
<!----><?xml version="1.0" encoding="utf-8" ?>
<employees>
<employee id="1">
<name>
<firstName>Jack</firstName>
<lastName>Wang</lastName>
</name>
<city>BeiJing</city>
<state>BeiJing</state>
<zipCode>100061</zipCode>
</employee>
<employee id="2">
<name>
<firstName>DeHua</firstName>
<lastName>Liu</lastName>
</name>
<city>Hongkong</city>
<state>China</state>
<zipCode>000061</zipCode>
</employee>
</employees>
2.page页代码
<!----><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div style="width:400px; border:solid 1px #000; background-color:#8ABBDF; color:White;">
<asp:Label ID="mEmployeesLabel" runat="server" Text=""></asp:Label>
</div>
</form>
</body>
</html>3.读取元素 代码
<!----> string xmlFilePath=Request.PhysicalApplicationPath+@"\Employees.xml";
try
{
using (XmlReader reader=XmlReader.Create(xmlFilePath))
{
string result;
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
result = "";
for (int count = 0; count < reader.Depth; count++)
{
result += "---";
}
result += "->" + reader.Name + "<br/>";
this.mEmployeesLabel.Text += result;
}
}
}
}
catch (Exception ex)
{
this.mEmployeesLabel.Text = "An Exception occured:" + ex.Message;
}4.效果
5.读取元素和属性名称代码
<!---->
<!---->protected void Page_Load(object sender, EventArgs e)
{
string xmlFilePath=Request.PhysicalApplicationPath+@"\Employees.xml";
try
{
using (XmlReader reader=XmlReader.Create(xmlFilePath))
{
string result;
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
result = "";
for (int count = 0; count < reader.Depth; count++)
{
result += "---";
}
result += "->" + reader.Name ;
this.mEmployeesLabel.Text += result;
//开始读属性
if (reader.HasAttributes)
{
this.mEmployeesLabel.Text += "(";
for (int count = 0; count < reader.AttributeCount; count++)
{
reader.MoveToAttribute(count);
this.mEmployeesLabel.Text += reader.Name+",";
}
this.mEmployeesLabel.Text += ")";
}
this.mEmployeesLabel.Text += "<br/>";
}
}
}
}
catch (Exception ex)
{
this.mEmployeesLabel.Text = "An Exception occured:" + ex.Message;
}
}
运行结果:
->employees
---->employee(id,)
------->name
---------->firstName
---------->lastName
------->city
------->state
------->zipCode
---->employee(id,)
------->name
---------->firstName
---------->lastName
------->city
------->state
------->zipCode
6. 读取内容
<!---->protected void Page_Load(object sender, EventArgs e)
发表评论
-
ASP.Net2.0使用Log4Net(一)
2007-11-24 15:40 1699第一种方法 在web.config中写配置文件 L ... -
ASP.Net2.0使用Log4Net(二)
2007-11-24 17:39 937(二)使用单独的配置文件,不放在web.config里 1. ... -
UML学习笔记
2007-11-25 09:55 721一、UML中的关系 依赖: 如果对象X发生变化,引起另一个对 ... -
NBear学习笔记(一)
2007-12-01 21:14 1137使用已有数据库。(之前先设计实体,再自动生成数据库,发现每次 ... -
NBear学习笔记(二)
2007-12-02 17:14 853本篇演示一对多关系,和两个表联合查询。 使用已有数据库,我们演 ... -
NBear学习笔记(三)
2007-12-04 22:11 892上一篇一对多的关系说的不是很清楚,这篇补充一下。 这篇我们创建 ... -
CSS使用总结
2007-12-12 21:10 672在分配ID和类名时,尽可能保持与表现形式无关,例如con ... -
ASP.NET2.0缓存技术
2007-12-12 23:33 727ASP.NET2.0提供如下缓存方式: Output Cac ... -
VS2008正式版创建silverlight项目失败的解决办法
2008-02-16 09:49 852安装microsoft express blend2 最新的试 ... -
vista英文版语言包安装
2008-02-17 21:35 1131最近,需要给老外截英文vista的一些图,但是系统装的是中文版 ... -
SilverLight显示中文字(一)
2008-02-18 14:42 973我们知道silverlight只提供了一下几种字体, 当我们 ... -
silverlight显示中文字(二):使用TextBlock+Downloader
2008-02-18 16:39 984(一),建立一个Silverlight1.0 site. ... -
SilverLight显示中文字(三) :使用Path和图形
2008-02-18 16:59 699使用path将文字转换为路径 用Direct select ... -
在Silverlight1.1中定义与调用Javascript事件的方法
2008-02-20 13:19 717我们在silverlight1.0 想调用javascrip ... -
在线流程图制作工具
2008-02-26 22:32 12921. DrawAnywhere , 的在线流程图制作工具。 D ... -
VS2008下开发ASP.Net2.0 and AJAX1.0的程序
2008-03-05 13:57 1065为什么要在vs2008下开发ASP.Net2.0 and AJ ... -
VS2008开发Silverlight2程序:环境安装
2008-03-06 13:36 1689微软在MIX08大会,发布了Silverlight 2 Bet ... -
ASP.NET 2.0 XML 系列(1): XML介绍
2008-03-15 12:40 7371.1 简介 XML的一个强大之处在于它的强大可扩展性。XM ... -
ASP.NET 2.0 XML 系列(2): XML技术
2008-03-15 14:13 7131. DTD XML最强大之处是允许自定义标签,但是对 ... -
ASP.NET 2.0 XML 系列(3): .Net Framework中XML类
2008-03-15 14:52 627System.Xml包含了一些和XML文档的读写操作相关的类, ...
相关推荐
\r\n 3.1.11 XML和ADO.NET\r\n 3.1.12 ASP.NET配置 \r\n 3.2 小结 \r\n第4章 用XmlReader和XmlWriter读写XML数据\r\n 4.1 XML的读取器和书写器\r\n 4.2 使用XmlReader类读取XML\r\n 4.2.1 XmlReader简介 ...
### ASP.NET 2.0 认证题解析 #### 题目一:XML文档验证错误查找 **问题描述:** 假设你正在开发一个Web应用程序,该应用的主要功能是处理XML文档,它需要从多个来源接收这些文档,然后将它们读取并存储到Microsoft...
本篇教程的目标是让开发者熟练地使用三种主要的ASP.NET类来读取XML文件:XmlReader、XMLDocument和XMLWriter。首先,我们来看XmlReader,这是一个高效且节省内存的读取器,它不存储整个XML文档,而是按需读取节点,...
在Asp.net中,读取并处理XML页面信息...通过以上知识点,开发者可以在Asp.net中轻松地从URL读取XML页面,并处理其中的数据,实现与远程服务的数据交换。理解并熟练运用这些技术对于构建功能丰富的Web应用程序至关重要。
在ASP.NET中,XML操作是常见的任务,它允许开发者处理XML文档,进行数据的读取、写入、解析和序列化。下面将详细探讨ASP.NET操作XML的相关知识点。 1. **XML文档对象模型 (XML DOM)**: ASP.NET 提供了System.Xml...
在ASP.NET中,可以使用XmlDocument类来创建、加载、修改和保存XML文档。 4. **XmlNode和XmlNodeList**:XmlNode是DOM模型的基本元素,代表XML文档中的任何节点,如元素、属性、文本等。XmlNodeList则是一个节点集合...
本文档将详细介绍如何使用C#结合ASP.NET技术对XML文档进行基本的操作,包括读取、查询、添加、删除以及编辑等核心功能。同时,文章还提供了一些实践中的注意事项,帮助开发者更好地理解和掌握XML文件的处理技巧。 #...
本篇文章将深入探讨如何使用ASP.NET进行XML的操作,包括添加、更改和删除XML文档中的元素。 首先,我们需要了解XML文档的基本结构。XML文档由一系列元素组成,每个元素可以有子元素,同时可以包含属性来提供额外的...
3. **System.Xml.XmlReader** 和 **System.Xml.XmlWriter**: 这两个类分别用于高效地读取和写入XML数据,不保留整个文档对象,因此适用于处理大型XML文件。 在描述中提到的源码示例可能涵盖以下内容: 1. **XML文件...
ASP.NET XML 深入编程技术是Web开发领域中的一个重要主题,主要涵盖了如何在ASP.NET环境中高效地使用XML进行数据存储、传输和处理。XML(eXtensible Markup Language)是一种自描述、结构化的数据格式,广泛应用于...
1. **使用XmlReaderSettings和XmlReader类验证XML文件** - `XmlReader` 类用于快速读取XML文档。通过配置 `XmlReaderSettings` 对象,您可以设置验证模式、加载外部实体等选项。这使得能够高效地进行XML文档的验证。...
在ASP.NET编程中,处理XML文档是一项常见的任务。本文将详细讲解.NET框架中涉及XML文档读写的核心类和方法,以及如何利用它们来实现XML文档的创建和操作。 首先,我们关注.NET框架中的几个关键命名空间: 1. **...
然后,使用XmlReaderSettings和XmlReader类,设置DTD验证,并读取XML文档以进行验证。 对于XSD验证,我们先创建一个.xsd文件,定义XML文档的架构。然后,使用DataSet或XmlSchemaSet,加载XSD并进行验证。在.NET中,...
本文详细介绍了 ASP.NET 中 XML 文件的写入和读取方法,包括 DOM、XMLReader 和 XPath 等多种读取方式,并简要介绍了 XSL 显示 XML 和 XML 文件的验证。希望这些知识能帮助开发人员更好地掌握 XML 文件的处理技巧。
- **XML的读取与解析**:可以使用XmlDocument类加载XML文档,然后通过SelectNodes或SelectSingleNode方法查询元素,或者使用XmlNode的子节点来遍历XML结构。 - **XML的创建与写入**:使用XmlWriter类可以创建新的...
如果需要将XML数据持久化,可以使用`XmlTextWriter`将XML写入文件,或者使用.NET Framework提供的XML序列化技术将对象转换为XML并保存。 5. **性能优化**:为了提高性能,可以使用数据适配器(如`SqlDataAdapter`)...
例如,可以使用`XDocument.Load()`方法读取XML文件: ```csharp XDocument doc = XDocument.Load("path_to_xml_file.xml"); ``` 2. **遍历XML数据**:`XDocument`对象提供了丰富的API来访问和操作XML数据。例如,...
XmlReader是一个只读、向前只进的扫描器,它按需读取XML数据,节省了内存。而XmlWriter则用于生成XML流,允许开发者逐步构建XML文档。这种方式适用于处理大文件或在网络上传输XML数据时,因为它更高效且内存占用较低...
例如,你可以使用XmlWriter写入XML数据,然后通过XmlReader读取并处理这些数据。当客户端发起Ajax请求时,服务器端的C#代码处理请求,根据需要操作XML,然后将处理后的结果以XML格式返回。 此外,该项目可能还涉及...
SAX是事件驱动的解析方式,只在需要时读取XML文档的一部分。在ASP.NET中,可以使用`System.Xml.XmlReader`实现SAX解析。`XmlReader`不创建完整的文档对象模型,而是按需读取节点,从而节省内存。这种方式适合处理大...