使用MSXML分析器处理XML文档

在 Kenn Scribner 近期有关 XML和MSXML DOM 分析器的文章中,仅介绍了该分析器的部 分功能。这些文章将XML 作为一种技术进行了说明,但是并没有介绍 XML 分析器本身。现在 ,Kenn 将回过头来介绍 MSXML 分析器,并讲解处理 XML 文档和节点所需的基本知识:搜索 特定的节点、插入节点和检索节点值。

MSXML 分析器基于 XML 文档对象模型,对于查看表 1 中所示的各种文档对象来说,它非 常重要。这些对象直接出自 XML 规范本身。MSXML 还可以进一步将XML DOM 对象合并到 COM 中。因此,弄清楚哪个 XML DOM 对象对应于哪个 MSXML COM 接口非常容易。例如, IXMLDOMNode 代表称为 Node 的DOM 对象。

表 1. XML DOM 对象及其用途
DOM 对象 用途
DOMImplementation 一个查询对象,用于确定 DOM 支持的级别
DocumentFragment 表示树的一部分(可进行剪切/粘贴操作)
Document 表示树中的顶级节点
NodeList 用于访问 XML 节点的Iterator 对象
Node 用于扩展带核心 XML 标记的元素
NamedNodeMap 命名空间支持和迭代通过属性节点集合
CharacterData 文本操作对象
Attr 表示元素的属性
Element 表示 XML 元素的节点(可用于访问属性)
Text 表示给定元素或属性对象的文本内容
CDATASection 用于屏蔽 XML 部分,使其不受分析和验证
Notation 包含基于 DTD 或架构内的表示法
Entity 表示已分析或未分析的实体
EntityReference 表示实体引用节点
ProcessingInstruction 表示处理指令

虽然有时比较容易混淆,但是 XML 文档对象可以是(并且通常是)多态的。即,“ 节点”同时也是一个“元素”。当您试图确定需要何种 DOM 对象来执行何 种操作时,这有时会造成混淆。可以使用“文档”对象来创建 DOM“节点 ”,但是,如果要向新创建的节点添加属性,就必须通过其作为“元素”的 一面来访问它。如果说存在一种将对象和操作关联在一起的神奇模式,那么我还没能从自己 的日常工作中将它提炼出来。我发现自己仍需要不断参考 MSDN 文档来查看哪个 COM 接口提 供了所需的方法以执行我试图完成的任务。各种对象方法看上去的确是按逻辑分组的,这也 正是我对 DOM 当初的开发模式的推断(通过分组逻辑操作)。

因此,其中的诀窍就在于从 MSXML 分析器检索适当的DOM 对象,这一操作的具体实现就 是 COM 对象。操作的基本模式将是:首先实例化 MSXML COM 对象本身的一个副本,然后从 该副本请求或以其他方式获取指向附加 XML DOM 对象(本身也是 COM 对象)的指针。

MSXML DOM 试验应用程序

创建一个漂亮的应用程序,演示众多的MSXML 功能,这很简单,但实际上,附加的代码只 会画蛇添足。相反,我选择了开发一个简单的基于控制台的应用程序,该应用程序执行四种 基本操作:

从磁盘加载一个 XML 文件。
搜索特定的节点,并向该节点插入一个子节点。
搜索另一个节点,并显示该节点内包含的(文本)值。
将修改后的XML 文档保存回磁盘中。
时间: 2024-12-28 10:41:25

使用MSXML分析器处理XML文档的相关文章

VC++中利用MSXML解析XML文档

c++|xml 四.程序实现 下面通过一个具体的实例来说明在VC++中如何利用MSXML解析XML文档. (1)源XML文档(xmlfile.xml)如下: <?xml version="1.0" encoding="GB2312"?> <Device id="10041" name="设备1"> <Type>13</Type> <TypeName>保护</Ty

MSXML 处理 xml 文档时外部DTD定义的问题 --属性设置 (ASP)

xml|问题|xml xmlfile = "http://myserver/catalog.xml"xslfile = "catalog.xsl" ' 创建相关对象Set xslDoc = server.CreateObject("MSXML2.FreeThreadedDOMDocument")Set xmlDoc = server.CreateObject("MSXML2.DOMDocument") ' 读取xsl文件xsl

XML 文档与数据库表

  包括SQL Server 7.0 在内的SQL Server 系列版本并不提供XML. 支持开发人员以前不得不使用一个XML 分析器,如微软的XML 分析器(MSXML),而且它们必须编写自己的代码来处理细节:把不同的元素从XML 文档中提取出来并按需要把它们放进关系表的不同部分,然后访问关系表:或者编写代码将数据从数据库表中提取出来,再以正确的格式放回到XML 文档中.当我们在享受XML 所带来的好处时,我们常会发现自己在开发Web 应用程序时不得不应付这样的工作,而且在开发不同的Web

MS SQL基础教程:XML文档与数据库表

包括SQL Server 7.0 在内的SQL Server 系列版本并不提供XML. 支持开发人员以前不得不使用一个XML 分析器,如微软的XML 分析器(MSXML),而且它们必须编写自己的代码来处理细节:把不同的元素从XML 文档中提取出来并按需要把它们放进关系表的不同部分,然后访问关系表:或者编写代码将数据从数据库表中提取出来,再以正确的格式放回到XML 文档中.当我们在享受XML 所带来的好处时,我们常会发现自己在开发Web 应用程序时不得不应付这样的工作,而且在开发不同的Web 应用

使用sp_xml_preparedocument处理XML文档的方法_MsSql

有时会在存储过程中处理一些XML格式的数据,所以会用到sp_xml_preparedocument,他可以将XML数据进行读取,然后使用 MSXML 分析器 (Msxmlsql.dll) 对其进行分析.我们就可以很容易的在存储过程中得到XML中我们想要的数据.下面的代码就是使用sp_xml_preparedocument读取XML: 复制代码 代码如下: DECLARE @hdoc int DECLARE @doc varchar(1000) SET @doc =' <ROOT> <Cu

从字符文档到xml文档

xml     计算机世界尽管现在越来越多地试图使用unicode这一世界语来说话,但还是存在着gb2312,shift-jis这样的方言,使用MSXML DOM就会清楚地体会到方言的不便.    我想将下面这个文本文档直接存为转换成xml,是否OK,答案是NG(No Good)strXML="<?xml version=""1.0"" encoding=""GB2312""?><XML>这里

Xml文档验证

xml 摘要:本文概述了 XML Web Service 对于开发人员的价值,同时还介绍了 SOAP.WSDL 和 UDDI. 目录什么是 XML Web Service? SOAP WSDL UDDI 其他内容什么是 XML Web Service?XML Web Service 是在 Internet 上进行分布式计算的基本构造块.开放的标准以及对用户和应用程序之间的通信和协作的关注产生了这样一种环境,在这种环境下,XML Web Service 成为应用程序集成的平台.应用程序是通过使用多

灵活调用xsl来解析xml文档(js异步)

js|xml|异步     1.新建一个vs2003的web工程,取名为XMLTest      2.将工程目录下的WebForm1.aspx中内容全部删除,只留下顶部的一条语句:      <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="XMLTest.WebForm1" %> 3.修改W

在.NET里更好的创建XML文档

xml|创建 在.NET里更好的创建XML文档 作者: BUILDER.COM 创建XML文档不是一件特别困难的事,但是却是很让人乏味的,尤其是在你必须总是创建类型相似的文档的时候.使用代码来处理这些重复性的任务是行得通的.但是利用机器自动编程来创建XML文档到底有多难或者有多容易?这取决于你所使用的方法. 编写标示语言是令人乏味的任务  对于这个问题过于简单化的回答是:创建XML文档和创建文本文档是一样简单的.毕竟,XML文档只是一个文本文档.但是一个更加现实的回答是:编写标示语言可能会是令人