`

XML:C#中的存取和DataSet

阅读更多
本文将会涉及3个方面的内容:
1.存取XML文件
2.XML文档对象模型
3.XML和DataSet
这里我们先介绍操作XML文件的两个对象:XmlTextReader和XmlTextWriter
打开和读取Xml文件使用到的对象就是XmlTextReader对象。下面的例子打开了与程序在同一路径下的一个例子文件sample.xml
XmlTextReader reader = new XmlTextReader("sample.xml");
然后我们可以通过其Read方法实现自动便利XML文件。例:
while(reader.Read())
{
//在这里填写对于XML的操作代码
}
下面我们看一个复杂一些的例子。
while(reader.Read())
{
switch(reader.NodeType)
{
case XmlNodeType.Element: //当前节点是一个元素
Console.Write("<" + reader.Name);
while(reader.MoveToNextAttribute()) //按照顺序读取下一个属性
Console.Write(" " + reader.Name + "='" + reader.Value + "'");
Console.Write(">");
break;
case XmlNodeType.DocumentType: //XML文件的类型声明
Console.WriteLine(reader.NodeType + "<" + reader.Name + ">" + reader.Value);
break;
……
}
}
从第3行开始我们就根据NodeType属性去判断节点的类型,根据节点的不同类型进行不同的处理。下表列出了一些常用的节点类型。
XmlTextReader的NodeType的取值
类型 说明
All 所有节点

Attribute 一个属性

CDATA 转义那些会被看作标记语言(如HTML)的文本
Comment 使用<!—和-->分隔的注释
Document XML数据树的根节点
DocumentType 文档的类型声明,即<!DOCTYPE…>标记
Element 一个元素,通常是XML文件中的实际数据

EndTag 元素的结束位置

None 不是节点

Text 返回元素的文本内容

XMLDeclaration XML声明节点,例如<?xml version=’1.0’?>
在进行写入XML文件时我们使用的XmlTextWriter类,它是XmlWriter的子类,速度快且不使用缓存,但是同XmlTextReader一样,在写入XML文件时只能向前。
我们假定要写入的XML文件在C盘根目录下:
XmlTextWriter writer = new XmlTextWriter("C:\\sample2.xml",null);
在这里如果不想把数据写入文件,而只是想在命令窗口显示,则可以把“Console.Out”作为参数传递给构造器,此时应把上述语句改为:
XmlTextWriter writer = new XmlTextWriter(Console.Out);
下面我们介绍一下写入XML文件数据的一些常用方法:
XmlTextWriter的常用方法

方法说明 用法

WriteStartDocument
写XML声明部分,即“<?xml version=”1.0”?>” writer.WriteStartDocument();
WriteEndDocument 使没有闭合元素闭合 writer.WriteEndDocument();

WriteDocType写DOCTYPE声明 writer.WriteDocType("sample2",null,null,"<!ENTITY h 'hardcover'>");

WriteStartElement 写元素的开始标志 writer.WriteStartElement("sample2");
WriteEndElement 写元素的结束标志 writer.WriteEndElement();
WriteString 写入字符串 writer.WriteString("Pride And Prejudice");

WriteCData写CDATA块,即写入的文字在<![CDATA[…]]>间 writer.WriteCData("Price 15% off!!");

WriteRaw手工写入一行,不作任何处理 writer.WriteRaw("this & that");

WriteEntityRef 写入实体引用,即前面加“&”后面加“;” writer.WriteEntityRef("h");

WriteProcessingInstruction写入处理指令, writer.WriteProcessingInstruction("xml-stylesheet",PItext);
即前面加“<?”后面加“?>”

WriteComment写入注释,自动加入注释标志“<!--”和“à” writer.WriteComment("sample XML");

Flush 把缓存中的内容写入文件 writer.Flush();

Close 关闭,如有未闭合的元素,自动闭合 writer.Close();
其中WriteString方法会对字符串进行下述处理:
1.字符“&”、“<”和“>”转化为“&amp;”、“&lt;”和“&gt;”。
2.ASCII码为0~1F(十六进制)的字符转化为“&#0”~“&#1F”。
3.如果是在写属性的值则双引号“””转化为“&quot;”;单引号 “’”转化为“&apos;”。

下面给大家写出一个例程,由于注释比较详细就不作过多解释了。
using System;
using System.IO;
using System.Xml;

public class Sample
{
private const string filename = "sampledata.xml";

public static void Main()
{
XmlTextWriter writer = null;
writer = new XmlTextWriter (filename, null);
//为使文件易读,使用缩进
writer.Formatting = Formatting.Indented;
//写XML声明
writer.WriteStartDocument();
//引用样式
String PItext="type='text/xsl' href='book.xsl'";
writer.WriteProcessingInstruction("xml-stylesheet", PItext);
//Write the DocumentType node
writer.WriteDocType("book", null , null, "<!ENTITY h 'hardcover'>");

//写入注释
writer.WriteComment("sample XML");

//写一个元素(根元素)
writer.WriteStartElement("book");
// genre 属性
writer.WriteAttributeString("genre", "novel");

// ISBN 属性
writer.WriteAttributeString("ISBN", "1-8630-014");
//书名元素
writer.WriteElementString("title", "The Handmaid's Tale");

//Write the style element
writer.WriteStartElement("style");
writer.WriteEntityRef("h");
writer.WriteEndElement();
//价格元素
writer.WriteElementString("price", "19.95");
//写入 CDATA
writer.WriteCData("Prices 15% off!!");
//关闭根元素
writer.WriteEndElement();

writer.WriteEndDocument();
//缓冲器内的内容写入文件
writer.Flush();
writer.Close();

XmlDocument doc = new XmlDocument();

doc.PreserveWhitespace = true;
//加载文件
doc.Load(filename);

//XML文件的内容显示在控制台
Console.Write(doc.InnerXml);
//等待用户阅读
Console.In.Read();
}
}

分享到:
评论

相关推荐

    Visual C# 2005文件IO与数据存取秘诀(程序范例)

    《Visual C# 2005 文件IO与数据...综上所述,《Visual C# 2005 文件IO与数据存取秘诀》不仅详细阐述了文件操作和数据存取的基础知识,还提供了实用的程序范例,是C#初学者和经验丰富的开发者深入了解此领域的宝贵资源。

    C#操作XML文档的详解

    C# 提供了一系列强大的工具和技术来处理 XML 文档,包括创建、读取、修改和保存 XML 文件。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,它允许开发人员定义自己的标签,从而使其非常灵活。 ### 添加...

    Visual C# 2005 文件IO与数据存取秘诀 源代码 CH2

    在IT行业中,尤其是在软件开发领域,文件输入/输出(File I/O)和数据存取是不可或缺的基本技能。本文将深入探讨Visual C# 2005中关于文件操作和数据存储的关键知识点,以CH2章节的源代码为背景,帮助开发者理解和...

    Visual+C#+2005文件IO与数据存取秘诀

    本文将深入探讨Visual C# 2005中如何进行文件操作和数据管理,基于多年的实践经验和软件项目实施过程中的积累。 1. 文件I/O基础: 在C#中,文件I/O主要通过System.IO命名空间提供的类来实现。File类提供了对文件的...

    章力民Visual C# 2005 文件IO和数据存取秘诀

    《章力民Visual C# 2005 文件IO和数据存取秘诀》是一本深入探讨C#编程中文件输入/输出(IO)和数据存储技术的专著。作者章力民是一位经验丰富的IT专家,他的这本书旨在帮助开发者掌握如何在C# 2005环境下高效地处理...

    基于C#的SQL Server应用技术.zip

    通过这些章节的学习,开发者可以全面掌握在C#环境中如何有效地与SQL Server数据库进行交互,从而在实际项目中实现高效的数据存取和管理。这些知识点涵盖了从基本的数据库连接到高级的性能优化,是任何C#开发者在进行...

    Visual C# 2005 文件IO与数据存取秘诀(章立民研究室著) 源代码 CH4

    本文将深入探讨Visual C# 2005中关于文件操作和数据管理的一些关键知识点,这些知识源自《Visual C# 2005 文件IO与数据存取秘诀》一书,由章立民研究室著。本章主要聚焦于第四章的内容,我们将讨论以下几个方面: 1...

    Visual C# 2005 文件IO与数据存取秘诀(章立民研究室著) 源代码 CH8-CH11

    在C#中,文件IO和数据存取是程序开发的基础部分,尤其对于处理本地数据存储、日志记录以及与其他系统交互至关重要。下面将详细讲解这些章节可能涵盖的知识点。 ### 1. 文件I/O基础 - **流(Stream)的概念**:在C#...

    Visual C# 2010文件IO与数据存取秘诀.rar

    总结起来,"Visual C# 2010文件IO与数据存取秘诀"这个压缩包应该包含如何使用Visual C#进行文件操作(包括读写、追加、删除等)和数据存取(如数据库连接、查询、XML处理)的相关教程和实例。学习这些内容对于提升C#...

    C#2005文件IO与数据存取秘诀-第八章

    在C# 2005中,文件I/O(Input/Output)和数据存取是开发者经常遇到的核心任务。第八章的主题很可能深入探讨了如何高效地处理这些操作,特别是针对数据库的数据存取。本章可能涵盖了以下关键知识点: 1. 文件操作...

    Visual C# 2005 文件IO与数据存取秘诀(章立民研究室著) 源代码 CH6-CH7

    《Visual C# 2005 文件IO与数据存取秘诀》是一本深入探讨C#编程中文件输入/输出(I/O)操作和数据存储技术的专业书籍,由章立民研究室著。这本书的重点在于帮助开发者掌握如何在C#环境下高效、安全地处理文件和数据...

    C#2005文件IO与数据存取秘诀-第十章

    在C# 2005中,文件I/O(输入/输出)和数据存取是开发者经常遇到的核心任务。本章“C#2005文件IO与数据存取秘诀”将深入探讨如何高效地处理文件操作和数据存储。下面我们将详细讲解其中的关键知识点。 1. 文件I/O...

    C#2005文件IO与数据存取秘诀-第十三章

    在C#编程中,文件输入/输出(IO)和数据存取是至关重要的技能,尤其在使用C#2005版本时。本章节聚焦于如何有效地管理文件操作和数据库交互,以实现高效的数据存储和检索。以下是本章可能涵盖的一些关键知识点: 1. ...

    C#2005文件IO与数据存取秘诀-第五章

    在C# 2005中,文件I/O(输入/输出)和数据存取是开发者经常遇到的核心任务,尤其在处理本地数据存储时。第五章深入探讨了这些主题,聚焦于数据集模型的数据存取技巧。数据集是.NET Framework提供的一种强大而灵活的...

    C#2005文件IO与数据存取秘诀-第三章

    在C# 2005中,文件I/O(输入/输出)和数据存取是进行桌面应用程序开发不可或缺的部分,特别是在Windows Forms环境下。本章主要聚焦于如何在Windows Forms应用中实现数据绑定,以实现用户界面与数据源之间的无缝交互...

    C#2005文件IO与数据存取秘诀-第二章

    在C#编程中,文件输入/输出(IO)和数据存取是至关重要的技术领域,尤其是在开发桌面应用程序、数据处理系统或任何需要读写文件的软件时。C# 2005版本提供了丰富的API来支持这些操作,使得开发者能够高效、安全地...

    isual C# 2005文件IO与数据存取秘诀(DVD源代码)

    《Visual C# 2005 文件IO与数据存取秘诀》是由知名IT专家章立民编著的一部深入探讨C#编程中文件输入/输出(I/O)和数据存储技术的专业著作。这本书的配套DVD源代码包含了从第1章到第14章的所有实例,为读者提供了...

    聖殿祭司的ASP.NET 3.5專家技術手冊II新功能篇--使用C# 试读目录

    - **组合管理C#的using陈述式**:介绍了如何使用C#中的using语句来管理资源,特别是数据库连接和其他需要显式释放的资源。 - **巢状MasterPages的支持**:允许在ASP.NET页面中嵌套使用多个母版页,提高了页面布局的...

    ADO.NET数据库实例教程

    ADO.NET是微软.NET框架中用于访问关系型数据库的关键组件,它提供了一套全面的数据访问接口,使得开发者可以高效地存取、操作和管理各种数据库。本教程将深入探讨ADO.NET的核心概念、主要组件以及如何利用它们来实现...

Global site tag (gtag.js) - Google Analytics