XML中的常见问题    

一般问题
  什么是 XML?

  可扩展标记语言 (XML) 是 Web 上的数据通用语言。它使开发人员能够将结构化数据,从许多不同的应用程序传递到桌面,进行本地计算和演示。XML 允许为特定应用程序创建唯一的数据格式。它还是在服务器之间传输结构化数据的理想格式。

  什么是 MSXML?

  MSXML 是提供核心 XML 服务的 Microsoft 软件组件。

  Microsoft XML 分析器能够做什么?

  最新版本的 Microsoft 核心 XML 服务提供下面四种不同的功能。

  基于文档对象模型 (DOM) 的分析器,它能够获取文本流(能够转换到 XML 的文件、程序中的字符串或者任何其他文本)并将它转换为能够编程处理的可导航 XML 树结构。

  SAX(Simple API for XML)分析器,它针对处理大型文档和高吞吐量的情况进行了优化的。SAX 是基于事件的分析器,它读取文档并将分析事件(例如元素的开始和结尾)直接报告给应用程序。用户创建的应用程序实现了处理不同事件的处理程序,这非常类似于处理图形用户界面 (GUI) 中的事件。

  XSLT 处理器读取 XSLT 文件,并将可扩展样式表转换语言 (XSLT) 文件的指令应用到 XML 文件,以产生某些类型的输出。除了创建 XML结构之外,XSLT 处理器还可以在得到的 XSLT 过滤器上执行一定量的优化,另外,从技术的角度看,它更像是一种编译器。

  验证分析器读取文档类型定义 (DTD) 或者 XML 架构,然后检验实际得到的文档的格式是否正确,以及是否不包含与架构冲突的数据。请注意,仅对架构而言,验证架构将返回架构本身作为对象,可以在以后在 HTML 列表框中创建选项时引用这个对象。
  所有四种功能都包含在同一 MSXML 库软件包中,它可以从 MSDN XML 开发人员中心(英文)免费得到。

  MSXML、MSXML2 和 MSXML3 之间的区别是什么?

  在过去三年中 XML 经历了许多反复,所以目前存在不同版本的 Microsoft XML 分析器也不奇怪。Internet Explorer 4.0 包含早期版本的 XML 分析器,它比 XSL、XML 数据或者大多数其他的 XML 技术(并且有完全不同的 DOM 模型)要早。该早期版本的分析器包含在 MSXML.dll 库中。从 MSDN XML 开发人员中心(英文)可将分析器升级到较新的一种。

  我们极力建议您升级到新的分析器,因为它要强大得多。Internet Explorer 5.0 包括 MSXML 2.0 分析器,它包含 XSL 和 XML 架构的基本版本。MSXML2 是 SQL Server 2000 附带的分析器版本。MSXML2 包含了许多性能增强的功能,并且在总体上提高了性能和可伸缩性。MSXML3 是当前作为“技术预览”附带的版本。MSXML3 包括 XSLT 和 XPath 支持以及 SAX 接口。

  XML 可以代替 HTML 吗?

  XML 比 HTML 提供更大的灵活性,但是它不可能很快代替 HTML。实际上,XML 和 HTML 能够很好地在一起工作。Microsoft 希望许多作者和开发人员都能同时使用 XML 和 HTML,比如用 XSLT 来生成 HTML。

  在 HTML 中增加 XML 的好处是什么?

  在 Web 上使用 XML 的好处有:

  它提供用于本地计算的数据。传递到桌面的数据可以进行本地计算。XML 分析器可以读取数据,并将它递交给本地应用程序(例如浏览器)进一步查看或处理。数据也可以由使用 XML 对象模型的脚本或其他编程语言来处理。

  向用户提供正确的结构化数据视图。传递到桌面的数据可以以多种方式表示。本地数据集,可以根据用户喜好和配置等因素,以适当的形式,在视图中动态表现给用户。

  允许集成不同来源的结构化数据。一般情况下,使用代理,在中间层服务器上集成来自后端数据库和其他应用程序的数据,使该数据能够传递给桌面或者其他服务器,做进一步聚合、处理和分布。

  描述来自多种应用程序的数据。由于 XML 是可扩展的,因此它可以用于描述来自多种应用程序的数据,从描述 Web 页面集合到数据记录。由于数据是自描述的,因此不需要数据的内置描述,也能够接收和处理数据。

  通过粒度更新来提高性能。XML 允许粒度更新。开发人员不必在每次有改动时都发送整个结构化数据集。有了粒度更新后,只有改变的元素才必须从服务器发送到客户机。改变的数据可以在不必刷新整个页面或表的情况下显示。

  XML 只适用于核心开发人员吗?

  不。和 HTML 文档一样,XML 文档可以由任何人创建 — 甚至是没有任何编程经验的人。XML 仅仅是一种描述信息的标准方式。此外,它还是一种语言,可以在没有任何软件的情况下用它来编写。您可以在文本编辑器中编写 XML 文档,并且直接放入 Web 站点,不需要编写传统方式下的任何代码。

  开始使用 XML 时需要什么?

  要使用 XML,您需要能够读取 XMl 文档的 XML 分析器,并且使它的内容能被处理。Microsoft 提供了一种分析器,可以从 MSDN XML 开发人员中心(英文)下载。

  要使用 XML 文档,可以使用文本编辑器(例如记事本)或任何其他可以用于创建 HTML 页面的编辑器。要创建完整形式的 XML 应用程序,请使用诸如 Microsoft? Visual Studio? 的编程环境。

  有如何使用 XML 的实际例子吗?

  XML 正在数量惊人的应用程序中使用,范围从 Web 站点创建和文档化到数据库集成和分布式编程。在下面几个领域中,XML 有其用武之地:

  业务对业务的传输。业务数据(发票、购买定单、会计和税务信息等等)是以 XML 格式在厂商之间电子传输的。与旧的电子数据交换 (EDI) 格式相比,XML 提供了许多优点,而不仅仅是可以在传输中从一种发票格式转换到另一种。

  分布式编程。XML 是非常理想的复杂多平台应用程序构造方案,这样就使得 Windows 服务器和其他操作系统的集成成为可能。

  Web 站点体系结构。由于 XML 的层次结构和分布式特性,Web 站点开发人员在他们 Web 站点的总体体系结构和导航结构中越来越多地使用它。此外,越来越多的目录表和索引表、跟踪用户信息及 Web 站点状态的 XML 结构、基于 HTML 的组件和处理数据流的渠道,都用 XML 和 XSLT 编写。

  数据库操作。XML 正成为与数据库交互的流行工具 — 无论从 SQL 查询中检索 XML 数据集,还是用 XML 记录更新数据库。而且我们还有分离实现的优点。通过将数据压缩为 SML,就不需要对实际的数据库结构有任何了解。

  文档管理。目前的大多数公司都陷在文书工作的海洋里,而且会越来越糟。XML 正在越来越多地用于将文档编码成 XML,使文档更易于检索或提供链接到文档的注释上下文,以便更有效地进行参考。

  我可以忽略 XML 吗?

  如果您想在 Internet 世界中竞争的话,那就不可以忽略 XML。XML 是导致以我们考虑编程本身的方式进行模式转移的一种语言。传统的专用客户机/服务器应用程序,正在给“随时随地访问”的 Internet 服务让位,XML 是处理任何事情(从数据访问处理到在该新环境中表现数据)的逻辑媒体。

  Microsoft Internet Explorer 4.0 支持 XML 吗?

  是的。Internet Explorer 4.0 支持 XML 下列功能:

  通用的 XML 分析器,它读取 XML 文件并将它们传递到应用程序(例如查看器)进行处理。应用程序开发人员可以使用 Microsoft 的两个分析器:C++ 中的 Microsoft XML 分析和 Java 中的 Microsoft XML 分析器。

  XML 对象模型 (XML OM) 使用 World Wide Web Consortium (W3C) 标准文档对象模型 (DOM) 允许程序通过 XML 分析器访问结构化数据,使开发人员拥有交互和计算数据的能力。有关详细信息,请参见 DOM 规范(英文) 。

  XML 数据源对象 (XML DSO) 允许开发人员连接到结构化 XML 数据,并用动态 HTML 的数据绑定机制将它提供给 HTML 页面。


 Internet Explorer 5.0 对 XML 提供哪个级别的支持?

  Internet Explorer 5 提供下列 XML 支持:

  直接查看 XML。Microsoft XML 实现允许用户通过他们的 Web 浏览器使用 XSL 或者层叠样式表 (CSS) 查看 XML,就象查看 HTML 文档一样。

  高性能、验证 XML 引擎。Internet Explorer 4.0 开发人员熟悉的 XML 引擎已经得到了很大的增强,并且完全支持 W3C XML 1.0 和 XML 名称空间,这样开发人员就可以在 Web 上统一限定元素名称,从而避免了相同名称的元素之间的冲突。Windows 中的本机 XML 支持意味着,当开发人员在应用程序和组件之间移动数据时,可以使用完整的 XML 处理功能来读取和处理数据。

  可扩展样式转换语言 (XSLT) 支持。使用基于最新的 W3C Working Draft 的 Microsoft XSLT 处理器,开发人员可以对 XML 数据应用样式表,并以易于自定义的动态和灵活方式来显示数据。Microsoft XSLT 处理器的查询功能也允许开发人员用程序,在客户机或服务器上,在 XML 数据集内部查找和摘取信息。

  XML 架构。架构(英文) 定义 XML 文档规则,包括元素名称和丰富的数据类型,它们的元素可以表现为组合,并且每个元素的属性都可用。为了启用多层应用程序,Microsoft 将根据提交给 W3C XML 工作组的缩减 XML 数据架构 (XDR) 来发布 XML 架构的技术预览。

  服务器端 XML。服务器端 XML 处理允许使用 XML 作为在多个分布式应用程序服务器(甚至是跨越操作系统边界)之间传送数据的标准方式。

  XML 文档对象模型 (DOM)。XML DOM 是标准对象应用程序编程接口,它使开发人员能够用程序控制 XML 文档内容、结构、格式等等。Microsoft XML 实现包括对 W3C XML DOM 建议的完全支持,并且可以用脚本、Visual Basic 开发系统、C++ 和其他编程语言来访问。

  C++ XML 数据源对象。XML DSO 允许将 HTML 元素直接绑定到 XML 数据岛。此外,它还提高了性能,有强大的能力可以绑定到不同 XML 节点上,而且利用了 Internet Explorer 5 beta 中所有的新的数据绑定功能。
  HTML、动态 HTML 和 XML 之间的关系是什么?

  HTML 可以和 CSS 一起用于格式化和表示超链接页面。动态 HTML,通过 DOM,使 HTML 中的所有元素,都可以通过与语言无关的脚本和其他编程语言来访问,从而在很大程度上提高了客户机端的交互能力,而且不需要对服务器的额外需求。页面的对象模型允许动态更改任何方面的内容(包括增加、删除和移动)。

  通过为结构化数据添加 XML,为开发人员提供了构造下一代丰富、灵活 Web 应用程序的技术。使用 XML,他们可以为桌面提供结构化数据,并且用 XML 对象模型计算数据。现在的开发人员可以在浏览器(例如 Microsoft Internet Explorer 4.0 和 Microsoft Internet Explorer 5)或者其他应用程序中,通过脚本显示基于 XML 的数据。此外,他们也可以对数据应用格式化规则,而不需要使用 XSLT 样式表的复杂脚本(实际上是将基于 XML 的数据转换为显示)。这两种显示基于 XML 数据的方法,都使得生成复杂数据的多个视图成为可能。

  为什么 XML 这么重要?

  XML 将成为计算领域的未来。作为一种技术,它的影响力将渗透到编程的每个方面,从嵌入式系统到图形界面,到分布式系统以及数据库管理。它实际上已经成为软件工业之间数据通信的标准,并且迅速代替 EDI 系统成为全球几乎所有工业进行业务交换的主要媒体。它很有可能会成为创建和存储大多数文档的语言,不管是否在 Internet 上,并且有可能成为 Internet 应用程序服务器的基础,有些人相信它将代替许多目前生产的小包装产品。

  Microsoft 提供什么 XML 产品?

  Microsoft 正在努力为许多领域开发 XML 资源:

  数据访问。最新的 ActiveX? 数据对象 (ADO) 的化身,已经支持 XML 的生成和消费将近一年了,并且 Microsoft SQL Server 2000 为基于 SQL 的信息和 XML 之间的互相转换提供了许多接口。

  浏览器支持。Microsoft 是第一个生产能够阅读 XML 文件(无论是用原始结构形式,还是通过 XSL 或 CSS 样式表)的商业浏览器 (Internet Explorer 5) 的公司。

  BizTalk Server 2000。Microsoft? BizTalk(TM) Server 2000 提供了在大量不同格式(包括 XML)之间通信的方式,来帮助推动业务对业务的应用程序。BizTalk Server 也包括了许多架构生成和映射工具,从而大大简化了业务或商业需要的 XML 结构的开发。
  在 Web 上传输,必须压缩 XML 吗?

  一般来说,压缩 XML 的需要是与应用程序有关的,并且很大程度上是服务器和客户机之间移动数据量的函数。用于描述数据结构的标记的反复特性,使 XML 能够非常好地压缩数据。值得注意的是 HTTP 1.1 服务器和客户机的压缩都是标准的,XML 可以自动从中受益。

  XML 作为数据格式有多安全?有没有增加 XML 安全性的计划?

  XML 和 HTML 一样安全。正因为安全的 HTTP (HTTPS) 可以用于对 HTTP 添加密码技术,从而保护了 HTML,因此它也可以用于保护 XML。XML 是表示结构化数据的基于文本格式。这可以使数据的简单性和互操作性最大化。对 XML 格式增加安全性和验证能力时可以采取许多步骤。首先,XML 可以在传输到客户之前在服务器上加密,然后在客户机上解密。应用于数据本身的数字签名也可以验证 XML。

如何加载有外国和特殊字符的文档?

  文档可以包含外国字符,例如:


  foreign characters (úóí?)


  例如 磲 的外国字符必须在前面加上 escape 序列。外国字符可以是 UTF-8 编码或用不同编码指定,如下所示:


  foreign characters (磲)


  现在可以正确加载 XML 了。

  其他字符是保留在 XML 中的,并且需要以不同的方式处理。下面的 XML:


  This & that
  产生如下错误:
  此处不允许有空格。
  行 0000001: This & that
  位置 0000012: ----------^


  此处 & 是 XML 句法结构的一部分,如果它仅仅放在 XML 数据源内部,那么不能解释为 &。您需要替换称为“实体”的特殊字符序列。

  This & that
  下面的字符需要相应的实体:


  < <
  & &
  > >
  " "
  ' '


  引号字符被用作标记中属性值的定界符,因此通常不能在属性值的内部使用。例如,下面的内容将返回错误:

  此处的单引号既用作属性定界符,又在属性值自身中。为了纠正这个问题,可以将属性定界符换成双引号:

  或者可以将单引号转义为实体 '

  上述两种方式都将通过 XML 对象模型中的 getAttribute 方法返回属性值 John's Stuff。同样,对于双引号,您可以使用实体
  "。
  也可以通过将文本放在 CDATA 节中来处理元素内容中的特殊字符。下面的内容是正确的:

  在本例子中,XML 对象模型将 CDATA 节点显示 xml 节点的子节点,它将返回字符串

  This & that is just "text" content.
  作为 nodeValue。

  如何在 Visual Studio 6.0 C++ 中使用 MSXML COM 组件?

  在 Visual C++ 6.0 中使用 MSXML COM 组件M的最简便方式是使用 #import 指令:

  #import "msxml.dll" named_guids no_namespace#import "msxml.dll" named_guids no_namespace
  它定义了所有 IXML* 接口和接口 ID,从而可以在应用程序中使用它们了。也可以从 INETSDK 获取 MSXML 类型库和头文件(英文),以及包含类 IIDs 的 uuid.lib。

  如何在 XML 中使用 HTML 实体?

  下面的 XML 包含 HTML 实体:


  Copyright ? 2000, Microsoft Inc, All rights reserved.


  它产生下列错误:


  引用未定义的实体 'copy'。
  行: 1, 位置:23, 错误码:0xC00CE002
  Copyright ? 2000, ...
  ----------------------^


  这是因为 XML 只有五个内置实体。关于内置实体的详细信息,请参阅如何加载有外国和特殊字符的文档?。

  要使用 HTML 实体,需要用 DTD 定义它们。有关 DTD 的详细信息,请参阅 W3C XML 建议(英文)。要使用该 DTD,请将它直接包括在 DOCTYPE 标记中,如下所示:


  Copyright ? 2000, Microsoft Inc, All rights reserved.


  要加载它,需要关闭 IXMLDOMDocument 接口的 validateOnParse 属性。请尝试将它粘贴到“Validator 测试页”中,关闭 DTD 验证,然后单击“验证”。请注意文档将加载,并且版权字符将显示在 validator 页面的末尾的 DOM 树中。

  如果已经完成了 DTD 验证,那么必须将作为参数实体的 HTML 实体包括在现有的 DTD 中,如下所示:


  %HTMLENT;
  %HTMLENT;


  它将定义所有 HTML 实体,以便在 XML 文档中使用它们。

  在元素内容中如何处理空白字符?

  XML DOM 有三种访问元素文本内容的方式:

  属性 行为

  nodeValue 按照原始的 XML 源中指定的那样,返回 TEXT、CDATA、COMMENT 和 PI 节点上的原始文本内容(包括空白字符)。对于 ELEMENT 节点和 DOCUMENT 本身,则返回空值。

  数据 与 nodeValue 相同

  文本 重复连接指定子树中的多个 TEXT 和 CDATA 节点并返回组合结果。

  注意: 空白字符包括新行、tab 和空格。

  nodeValue 属性通常返回原始文档中的内容,与文档如何加载和当前 xml:space 范围无关。

  文本属性连接指定子树中的所有文本并扩展实体。这与文档如何加载、preserveWhiteSpace 开关的当前状态和当前 xml:space 范围有关,请看如下所示:

  preserveWhiteSpace = true when the document is loaded
preserveWhiteSpace=true preserveWhiteSpace=true preserveWhiteSpace=false preserveWhiteSpace=false
xml:space=preserve xml:space=default xml:space=preserve xml:space=default
保留 保留 保留 保留并截断


  preserveWhiteSpace = false when the document is loaded
preserveWhiteSpace=true preserveWhiteSpace=true preserveWhiteSpace=false preserveWhiteSpace=false
xml:space=preserve xml:space=default xml:space=preserve xml:space=default
半保留 半保留并截断 半保留 半保留并截断


  此处的保留表示和原始 XML 文档中完全相同的原始文本内容,截断意味着前导和尾部空格已经删除,半保留意味着保留了“重要的空白字符”并规范化了“不重要的空白字符”。重要的空白字符是文本内容内部的空白字符。不重要的空白字符是标记之间的空白字符,请看如下所示:

  \n
  \t  Jane\n
  \tSmith   \n


  在本示例中,红色是可以忽略的不重要的空白字符,而绿色是重要的空白字符,因为它是文本内容的一部分,因此有不可忽略的重要含义。所以在本例中,文本属性返回下列结果:

  状态 返回值
  保留 "\n\t  Jane\n\tSmith  \n"
  
  保留并截断 "Jane\n\tSmith"
  
  半保留 "  Jane Smith  "
  
  半保留并截断 "Jane Smith"

  请注意“半保留”将规范化不重要的空白字符,例如,新行和 tab 字符将退化为单个空格。如果更改 xml:space 属性和 preserveWhiteSpace 开关,那么文本属性将返回相应的不同值。

  CDATA and xml:space="preserve" subtree boundaries
  在下面的例子中,CDATA 节点或“保留”节点的内容将得到连接,原因是它们不参与不重要的空白字符规范化。例如:


  \n
  \t Jane \n
  \t   Smith   ]>\n


  在这种情况下,CDATA 节点内部的空白字符不再与“不重要”空白字符“合并”,并且不会截断。因此“半保留并截断”情况将返回下列内容:

  "Jane   Smith   "

  在此, 和 标记之间的不重要的空白字符将包括在内,与 CDATA 节点的内容无关。如果用下列内容代替 CDATA,那么将返回相同结果:

  Smith  
  实体是特殊的

  实体是作为 DTD 的一部分加载和分析的,并且显示在 DOCTYPE 节点下。它们不一定要有任何 xml:space 范围。例如:


  Jane \n
  \t\n
  ">
  ]>
  &Jane;

在 XML 对象模型中如何处理空白字符?

  有些时候,XML 对象模型将显示包含空白字符的 TEXT 节点。空白字符被截断后,多半会带来一些混乱。例如下面的 XML 例子:


   ]>
  Smith
  John
 

  生成下列树:


   Processing Instruction: xml
  DocType: person
  ELEMENT: person
  TEXT:
  ELEMENT: lastname
  TEXT:
  ELEMENT: firstname
  TEXT: 


  名字和姓氏两边是只包含空白字符的 TEXT 节点,因为“person”元素的内容模型是 MIXED;它包含 #PCDATA 关键字。MIXED 内容模型指定元素之间可以有文本存在。因此,下面的内容也是正确的:


   My last name is Smith and my first name is
  John


  结果是类似于下面的树:


   ELEMENT: person
  TEXT: My last name is
  ELEMENT: lastname
  TEXT: and my first name is
  ELEMENT: firstname
  TEXT: 


  如果没有单词“is”之后和 之前的空白字符,以及 之后和单词“and”之前的空白字符,那么句子便无法理解。因此,对于 MIXED 内容模型来说,文字组合、空白字符和元素都是相关的。对于非 MIXED 内容模型来说则不是这样。

  要使只有空白字符的 TEXT 节点消失,请从“person”元素声明中删除 #PCDATA 关键字:

  结果是下面清晰的树:


   Processing Instruction: xml
  DocType: person
  ELEMENT: person
  ELEMENT: lastname
  ELEMENT: firstname

  XML 声明做什么?

  XML 声明必须列在 XML 文档的顶部:

  它指定下面的项目:

  该文档是 XML 文档。在丢失或者还没有指定 MIME 类型时 MIME 探测器可以用它来检测文件是否为类型 text/xml。
  文档符合 XML 1.0 规范。在以后 XML 有其他版本时这一点很重要。
  文档字符编码。编码属性是可选的,默认为 UTF-8。
  注意:XML 声明必须在 XML 文档的第一行,因此下面的 XML 文件:

  产生下面的分析错误:

  无效的 xml 声明。
  行 0000002:    
  位置  0000007: ------^
  注意:XML 声明是可选的。如果需要在顶部指定注释或者处理指令,那么请不要放入 XML 声明。但是,默认的编码将为 UTF-8。

  如何以可读格式打印我的 XML 文档?

  在用 DOM 从零开始构造文档以产生 XML 文件时,任何内容都在一行上,相互之间没有空格。这是默认的行为。

  构造在 Internet Explorer 5 中的默认 XSL 样式表,以可读格式显示和打印 XML 文档。例如,如果已经安装了 IE5,请尝试查看 nospace.xml 文件。浏览器中应该显示下面的树:

  -
  -
  XYZ
  12.56

  在 XML 中没有插入空白字符。

  打印可读 XML 是非常有趣的,特别是有定义不同类型内容模型的 DTD 时。例如,在混合内容模型 (#PCDATA) 下不能插入空格,因为它可能改变内容的含义。比如请考虑下面的 XML:

  Elephant
  这最好不输出为:

  E
  lephant
  因为单词边界不再正确。

  所有这些都使自动化打印成为问题。如果不需要打印可读 XML,那么可以使用 DOM 在适当的位置插入空白字符作为文本节点。

  如何在 DTD 中使用名称空间? 要在 DTD 中使用名称空间,请在使用它的元素的 ATTLIST 声明中声明它,如下所示:

  名称空间类型必须为 #FIXED。属性的名称空间也是这样:

  名称空间和 XML 架构
  DTD 和 XML 架构不能混合。例如,下面的


   xmlns:x CDATA #FIXED "x-schema:myschema.xml"


  将不导致使用在 myschema.xml 中定义的架构定义。对 DTD 和 XML 架构的使用是互斥的。

  如何在 Visual Basic 中使用 XMLDSO?

  使用下面的 XML 作为例子:


   Mark Hanson
  206 765 4583
  
  Jane Smith
  425 808 1111 


  可以按如下方式绑定到 ADO 记录集:

  创建新的 VB 6.0 项目。

  添加对 Microsoft ActiveX Data Objects 2.1 或更高版本、Microsoft Data Adapter Library 和 Microsoft XML 2.0 版的引用。

  用下面的代码将 XML 数据加载到 XML DSO 控件中:


   Dim dso As New XMLDSOControl
  Dim doc As IXMLDOMDocument
  Set doc = dso.XMLDocument
  doc.Load ("d:\test.xml")

  用下面的代码将 DSO 映射到使用 DataAdapter 的新记录集对象中:


   Dim da As New DataAdapter
  Set da.Object = dso
  Dim rs As New ADODB.Recordset
  Set rs.DataSource = da


  访问数据:


   MsgBox rs.Fields("name").Value

  结果显示字符串“Mark Hanson”
  如何在 Java 中使用 XML DOM?

  必须已经安装 MSXML.DLL 的 IE5 版本。在 Visual J++ 6.0 中,从项目菜单选择添加 COM 包装程序,然后从 COM 对象列表中选择“Microsoft XML 1.0”。该操作将把所需的 Java 包装程序构造到称为“msxml”的新软件包中。这些预先构造的 Java 包装程序也可以下载。类可以按如下方法使用:


   import com.ms.com.*;
  import msxml.*;
  public class Class1
  {
  public static void main (String[] args)
  {
  DOMDocument doc = new DOMDocument();
  doc.load(new Variant("file://d:/samples/ot.xml"));
  System.out.println("Loaded " + doc.getDocumentElement().getNodeName());
  }
  }

 

  代码示例将从 sun religion 示例中加载 3.8MB 测试文件“ot.xml”。Variant 类用于包装 Win32 VARIANT 基本类型。

  因为在每次检索节点时实际上都获得了新的包装程序,因此不能在节点上使用指针比较。因此,不要使用下面的代码,

  IXMLDOMNode root1 = doc.getDocumentElement();
  IXMLDOMNode root2 = doc.getDocumentElement();
  if (root1 == root2)...

  而要使用下面的代码:

  if (ComLib.isEqualUnknown(root1, root2)) ....

  .class 包装程序的总大小大约为 160KB。但是,为了与 W3C 规范完全符合,应该只使用 IXMLDOM* 包装程序。下面的类是旧的 IE 4.0 XML 接口,可以从 msxml 文件夹中删除它们:

  IXMLAttribute*,
  IXMLDocument*, XMLDocument*
  IXMLElement*,
  IXMLError*,
  IXMLElementCollection*,
  tagXMLEMEM_TYPE*
  _xml_error* 

 

  这使大小减少为 147KB。同时还可以删除下面的项目:


 

关联文档