XML作用
对于XML,想必各位都比较了解,我也就不用费笔墨来描述它是什么了,我想在未来的Web开发中XML一定会大放异彩,XML是可扩展标记语言,使用它企业可以制定一套自己的数据格式。用于Internet的数据传输,我想,这是XML对于我们这些程序员最诱人的地方!
我们今天的主题不是论述XML的好处,而是讨论在C#中如何使用XML。下面我们来了解一下使用程序访问XML的一些基础理论知识。
访问的两种模型:
在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询,但是,DOM的缺点在于它需要一次性的加载整个文档到内存中,对于大型的文档,这会造成资源问题。流模型很好的解决了这个问题,因为它对XML文件的访问采用的是流的概念,也就是说,任何时候在内存中只有当前节点,但它也有它的不足,它是只读的,仅向前的,不能在文档中执行向后导航操作。虽然是各有千秋,但我们也可以在程序中两者并用实现优劣互补嘛,呵呵
一、DOM文档对象模型操作
[url=http://localhost/%E6%9C%AA%E5%AE%A1/T_System_Xml_XmlNodeList.htm]XmlNodeList[/url] ,它包含与指定名称匹配的所有元素的列表
|
GetNamespaceOfPrefix
|
查找当前节点范围内离给定的前缀最近的 xmlns 声明,并返回声明中的命名空间 URI
|
|
GetPrefixOfNamespace
|
查找当前节点范围内离给定的命名空间 URI 最近的 xmlns 声明,并返回声明中定义的前缀
|
|
GetType
|
获取当前实例的 Type
|
|
ImportNode
|
将节点从另一个文档导入到当前文档
|
|
InsertAfter
|
将指定的节点紧接着插入指定的引用节点之后
|
|
InsertBefore
|
将指定的节点紧接着插入指定的引用节点之前
|
|
Load
|
加载指定的 XML 数据
|
|
LoadXml
|
从指定的字符串加载 XML 文档
|
|
Normalize
|
将XmlText 节点都转换成“正常”形式
|
|
PrependChild
|
将指定的节点添加到该节点的子节点列表的开头
|
|
ReadNode
|
根据 [url=http://localhost/%E6%9C%AA%E5%AE%A1/T_System_Xml_XmlReader.htm]XmlReader[/url] 中的信息创建一个 XmlNode 对象。读取器必须定位在节点或属性上
|
|
RemoveAll
|
移除当前节点的所有子节点和/或属性
|
|
RemoveChild
|
移除指定的子节点
|
|
ReplaceChild
|
用新节点替换旧节点
|
|
Save
|
将 XML 文档保存到指定的位置
|
|
SelectNodes
|
选择匹配XPath 表达式的节点列表
|
|
SelectSingleNode
|
选择匹配 XPath 表达式的第一个 XmlNode
|
|
Supports
|
测试 DOM 实现是否实现特定的功能
|
|
Validate
|
验证 XmlDocument 是不是 [url=http://localhost/%E6%9C%AA%E5%AE%A1/P_System_Xml_XmlDocument_Schemas.htm]Schemas[/url] 属性中包含的 XML 架构定义语言 (XSD) 架构。
|
|
WriteContentTo
|
将 XmlDocument 节点的所有子级保存到指定的 [url=http://localhost/%E6%9C%AA%E5%AE%A1/T_System_Xml_XmlWriter.htm]XmlWriter[/url] 中
|
|
WriteTo
|
将 XmlDocument 节点保存到指定的 XmlWriter
|
下面对常用的方法进行介绍。
(1)Load方法
该方法可以从一个字符串指定的XML文件或是一个流对象、一个TextReader对象、一个XmlReader对象导入XML数据。
(2)LoadXml方法
该方法完成从一个特定的XML文件导入XML数据的功能。默认情况下,LoadXml 方法既不保留空白,也不保留有意义的空白。此方法不执行 DTD 或架构验证。
(3)Save方法
该方法将XML数据保存到一个XML文件或是一个流对象、一个TextReader对象、一个XmlReader对象导入XML数据。
[h3] 3.XmlDocument类的事件[/h3]
XmlDocument类的事件及说明如下表所示。
表 XmlDocument类的事件及说明
|
事件
|
说明
|
|
NodeChanged
|
当属于该文档的节点的 Value已被更改时发生
|
|
NodeChanging
|
当属于该文档的节点的 Value 将被更改时发生
|
|
NodeInserted
|
当属于该文档的节点已被插入另一个节点时发生
|
|
NodeInserting
|
当属于该文档的节点将被插入另一个节点时发生
|
|
NodeRemoved
|
当属于该文档的节点已被从其父级移除时发生
|
|
NodeRemoving
|
当属于该文档的节点将被从文档中移除时发生
|
http://kb.cnblogs.com/page/42226/