简介C#读取XML的两种方式
本文导语: XML作用 对于XML,想必各位都比较了解,我也就不用费笔墨来描述它是什么了,我想在未来的Web开发中XML一定会大放异彩,XML是可扩展标记语言,使用它企业可以制定一套自己的数据格式。用于Internet的数据传输,我想,这...
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 以用于解析外部资源
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/
您可能感兴趣的文章:
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。