简介C#读取XML的两种方式_C#教程

XML作用

    对于XML,想必各位都比较了解,我也就不用费笔墨来描述它是什么了,我想在未来的Web开发中XML一定会大放异彩,XML是可扩展标记语言,使用它企业可以制定一套自己的数据格式。用于Internet的数据传输,我想,这是XML对于我们这些程序员最诱人的地方!

    我们今天的主题不是论述XML的好处,而是讨论在C#中如何使用XML。下面我们来了解一下使用程序访问XML的一些基础理论知识。

访问的两种模型:

    在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询,但是,DOM的缺点在于它需要一次性的加载整个文档到内存中,对于大型的文档,这会造成资源问题。流模型很好的解决了这个问题,因为它对XML文件的访问采用的是流的概念,也就是说,任何时候在内存中只有当前节点,但它也有它的不足,它是只读的,仅向前的,不能在文档中执行向后导航操作。虽然是各有千秋,但我们也可以在程序中两者并用实现优劣互补嘛,呵呵

一、DOM文档对象模型操作

复制代码 代码如下:

using System.Xml;

XmlDocument xml=new XmlDocument();//初始化一个xml实例
xml.Load(path);//导入指定xml文件
xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));XmlNode root=xml.SelectSingleNode("/root");//指定一个节点
XmlNodeList childlist=root.ChildNodes;//获取节点下所有直接子节点
XmlNodeList nodelist=xml.SelectNodes("/Root/News");//获取同名同级节点集合string id=node.Attributes["id"].Value;//获取指定节点的指定属性值
string content=node.InnerText;//获取指定节点中的文本
root.HasChildNodes;//判断该节点下是否有子节点

1.XmlDocument类的属性

   XmlDocument类的属性及说明如下表所示。


属性


说明


Attributes


当前节点的属性集合


BaseURI


当前节点的基URI


ChildNodes


节点的所有子节点


DocumentElement


文档的根


DocumentType


DOCTYPE 声明的节点


FirstChild


节点的第一个子节点


HasChildNodes


是否有任何子节点


Implementation


获取当前文档的 XmlImplementation对象


InnerText


节点包含的所有文本内容


InnerXml


节点所包含的所有XML内容


IsReadOnly


当前节点是否是只读的


Item


获取指定的子元素


LastChild


最后一个子节点


LocalName


获取节点的本地名称


Name


获取节点的限定名


NamespaceURI


获取该节点的命名空间 URI


NameTable


获取与此实现关联的 XmlNameTable


NextSibling


获取紧接在该节点之后的节点


NodeType


获取当前节点的类型


OuterXml


获取表示此节点及其所有子节点的标记


OwnerDocument


获取当前节点所属的 XmlDocument


ParentNode


获取该节点(对于可以具有父级的节点)的父级


Prefix


获取或设置该节点的命名空间前缀


PreserveWhitespace


获取或设置一个值,该值指示是否在元素内容中保留空白


PreviousSibling


获取紧接在该节点之前的节点


SchemaInfo


返回节点的后架构验证信息集 (PSVI)


Schemas


获取或设置与此 XmlDocument 关联的 XmlSchemaSet 对象


Value


获取或设置节点的值


XmlResolver


设置 XmlResolver 以用于解析外部资源

  2.XmlDocument类的方法

   XmlDocument类的方法及说明如下表所示。


方法


说明


AppendChild


将指定的节点添加到该节点的子节点列表的末尾


CreateAttribute


创建具有指定名称的 XmlAttribute


CreateCDataSection


创建包含指定数据的 XmlCDataSection


CreateComment


创建包含指定数据的 XmlComment


CreateDocumentFragment


创建 XmlDocumentFragment


CreateDocumentType


返回新的 XmlDocumentType 对象


CreateElement


创建 XmlElement


CreateEntityReference


创建具有指定名称的 XmlEntityReference


CreateNavigator


创建一个用于导航此文档的新 XPathNavigator 对象


CreateNode


创建 XmlNode


CreateProcessingInstruction


创建一个具有指定名称和数据的 XmlProcessingInstruction


CreateSignificantWhitespace


创建一个 XmlSignificantWhitespace 节点


CreateTextNode


创建具有指定文本的 XmlText


CreateWhitespace


创建一个 XmlWhitespace 节点


CreateXmlDeclaration


创建一个具有指定值的 XmlDeclaration 节点


GetElementById


获取具有指定 ID 的 XmlElement


GetElementsByTagName


返回一个 XmlNodeList ,它包含与指定名称匹配的所有元素的列表


GetNamespaceOfPrefix 


查找当前节点范围内离给定的前缀最近的 xmlns 声明,并返回声明中的命名空间 URI


GetPrefixOfNamespace 


查找当前节点范围内离给定的命名空间 URI 最近的 xmlns 声明,并返回声明中定义的前缀


GetType


获取当前实例的 Type


ImportNode


将节点从另一个文档导入到当前文档


InsertAfter


将指定的节点紧接着插入指定的引用节点之后


InsertBefore


将指定的节点紧接着插入指定的引用节点之前


Load


加载指定的 XML 数据


LoadXml


从指定的字符串加载 XML 文档


Normalize 


将XmlText 节点都转换成“正常”形式


PrependChild 


将指定的节点添加到该节点的子节点列表的开头


ReadNode


根据 XmlReader 中的信息创建一个 XmlNode 对象。读取器必须定位在节点或属性上


RemoveAll 


移除当前节点的所有子节点和/或属性


RemoveChild 


移除指定的子节点


ReplaceChild 


用新节点替换旧节点


Save


将 XML 文档保存到指定的位置


SelectNodes 


选择匹配XPath 表达式的节点列表


SelectSingleNode 


选择匹配 XPath 表达式的第一个 XmlNode


Supports 


测试 DOM 实现是否实现特定的功能


Validate


验证 XmlDocument 是不是 Schemas 属性中包含的 XML 架构定义语言 (XSD) 架构。


WriteContentTo


将 XmlDocument 节点的所有子级保存到指定的 XmlWriter 中


WriteTo


将 XmlDocument 节点保存到指定的 XmlWriter

  下面对常用的方法进行介绍。

  (1)Load方法

  该方法可以从一个字符串指定的XML文件或是一个流对象、一个TextReader对象、一个XmlReader对象导入XML数据。

  (2)LoadXml方法

  该方法完成从一个特定的XML文件导入XML数据的功能。默认情况下,LoadXml 方法既不保留空白,也不保留有意义的空白。此方法不执行 DTD 或架构验证。

  (3)Save方法

  该方法将XML数据保存到一个XML文件或是一个流对象、一个TextReader对象、一个XmlReader对象导入XML数据。

  3.XmlDocument类的事件

    XmlDocument类的事件及说明如下表所示。

                       表   XmlDocument类的事件及说明


事件


说明


NodeChanged


当属于该文档的节点的 Value已被更改时发生


NodeChanging


当属于该文档的节点的 Value 将被更改时发生


NodeInserted


当属于该文档的节点已被插入另一个节点时发生


NodeInserting


当属于该文档的节点将被插入另一个节点时发生


NodeRemoved


当属于该文档的节点已被从其父级移除时发生


NodeRemoving


当属于该文档的节点将被从文档中移除时发生

http://kb.cnblogs.com/page/42226/ 

时间: 2024-09-30 10:46:31

简介C#读取XML的两种方式_C#教程的相关文章

C#中实现Json序列化与反序列化的几种方式_C#教程

什么是JSON? JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write and easy for machines to parse and generate. JSON is a text format that is completely language independent. 翻译:Json[javascrip

asp.net中读取数据库的两种方式

asp.net|数据|数据库 在asp.net中,读取数据库中的数据可以使用DataReader和DataSet 2种方式,两者的差异如下: 使用Dataset对象读取数据大致需要以下5个步骤: (1)建立数据库链接,可以选用SQLConnection或者01edbConnection. (2)将查询保存在SQLDataAdapter或者oledbDataAdapter对象中. (3)使用DataAdapter对象的Fill方法将数据填充到DataSet中的DataTable中. (4)为Dat

用PHP编写和读取XML的几种方式_php技巧

一.使用DOM生成和读取XML文件 实例一: 复制代码 代码如下: <?php //Creates XML string and XML document using the DOM $dom = new DomDocument('1.0'); //add root - <books> $books = $dom->appendChild($dom->createElement_x_x ('books')); //add <book> element to <

详解C#批量插入数据到Sqlserver中的四种方式_C#教程

本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记录的ID的值然后再进行加1运算要少.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如果表中无可避免的存在索引,我们可以通过先删除索引,然后批量插入,最后再重建索引的方式来提高效率. create database C

C#批量插入数据到Sqlserver中的三种方式_C#教程

本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记录的ID的值然后再进行加1运算要少.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如果表中无可避免的存在索引,我们可以通过先删除索引,然后批量插入,最后再重建索引的方式来提高效率. create database C

总结C#动态调用WCF接口的两种方法_C#教程

如何使用 1.第一种方式比较简单,而且也是大家喜欢的,因为不需要任何配置文件就可解决,只需知道服务契约接口和服务地址就可以调用. 2.使用Invoke的方式,但是需要在调用客户端配置WCF,配置后在Invoke类里封装服务契约接口即可. 客户端调用DEMO //第一种方式 string url = "http://localhost:3000/DoubleService.svc"; IDoubleService proxy = WcfInvokeFactory.CreateServic

Javascript学习总结:Js继承的两种方式

文章简介:总结就是利用对象冒充机制的call方法把父类的属性给抓取下来,而成员方法尽量写进被所有对象实例共享的prototype域中,以防止方法副本重复创建.然后子类继承父类prototype域来抓取下来所有的方法.如想彻底理清这些调用链的关系,推荐大家多关注Js中prototype的constru 一直想对Javascript再次做一些总结,正好最近自己写了一个小型Js UI库,总结了一下Js的继承机制,在网上也看了一些前辈们博客里的总结,感觉分析不是特别全面.这里仅仅是把自己的学习体会拿出来

Spring加载properties文件的两种方式

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51365707 目录(?)[+]         在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,不需要修改源代码,这样更加方便.在spring中也可以这么做,而且Spring有两种加载properties文件

我的Android进阶之旅------&amp;gt;Android之Gallery和GridView两种方式与ImageSwitcher实现带预览的和幻灯片方式的两种图片浏览器

一.简介 a.GridView(网络视图)的功能和用法 b.ImageSwitcher(图形切换器)的功能和用法 c.Gallery(画廊视图)的功能和用法 二.通过一个实例来学习Gallery.GridView和ImageSwitcher step1:新建一个项目MyGridViewAndGallery                                            三:我们先写用GridView和ImageSwitcher实现 step1:设计所需的UI界面 a.