XML 任务

XML 任务用于与 XML 数据配合使用。使用此任务,包可以检索 XML 文档,使用可扩展样式表语言转换 (XSLT) 样式表和 XPath 表达式对文档应用运算,合并多个文档,还可以验证、比较更新的文档并将其保存到文件和变量。

此任务使 Integration Services 包能够在运行时动态修改 XML 文档。可以将 XML 任务用于下列目的:

  • 重新设置 XML 文档格式。例如,XML 任务可以访问 XML 文件中的报表并动态应用 XSLT 样式表来自定义文档表示形式。

  • 选择 XML 文档部分。例如,XML 任务可以访问 XML 文件中的报表并动态应用 XPath 表达式来选择 XML 文档的一部分。此运算还可以获得并处理 XML 文档中的值。

  • 合并来自多个源的文档。例如,XML 任务可从多个源下载报表并动态地将它们合并为一个综合的 XML 文档。

通过使用 XML 源从 XML 文档中提取值的方法,可以将 XML 数据包含在数据流中。有关详细信息,请参阅XML 源

XML 任务首先执行的运算是检索特定的 XML 文档。此运算内置于 XML 任务中并可自动执行。检索后的 XML 文档可用作 XML 任务执行运算的数据源。

XML 的 Diff、Merge 和 Patch 运算需要两个操作数。第一个操作数指定源 XML 文档。第二个操作数也指定一个 XML 文档,其内容取决于运算的要求。例如,Diff 运算要比较两个文档;因此第二个操作数指定另一个相似的 XML 文档,供源 XML 文档与之比较。

XML 任务可使用变量或文件连接管理器作为源,或将 XML 数据包含在任务属性中。

如果源是变量,则该指定的变量包含 XML 文档的路径。

如果源是文件连接管理器,则该指定的文件连接管理器提供源信息。文件连接管理器与 XML 任务分开配置,并在 XML 任务中被引用。文件连接管理器的连接字符串可指定 XML 文件的路径。有关详细信息,请参阅文件连接管理器

XML 任务可以设置为将运算结果保存到变量或文件。如果要保存到文件中,XML 任务将使用文件连接管理器访问该文件。您也可以将 Diff 运算生成的 Diffgram 结果保存到文件和变量中。

预定义的 XML 运算

XML 任务包含一组用来处理 XML 文档的预定义运算。下表介绍了这些运算。

运算

说明

Diff

比较两个 XML 文档。Diff 运算把源 XML 文档作为基准文档,将其与另一个 XML 文档进行比较,检测二者间的差异,并将差异写入 XML Diffgram 文档。此运算包含用来自定义比较的属性。

Merge

合并两个 XML 文档。Merge 运算使用源 XML 文档作为基文档,将第二个文档的内容添加到其中。此运算可以在基文档内指定合并位置。

Patch

将 Diff 运算的输出(称为 Diffgram 文档)应用到 XML 文档,以创建包含该 Diffgram 文档内容的新的父文档。

Validate

根据文档类型定义 (DTD) 或 XML 架构定义 (XSD) 架构验证 XML 文档。

XPath

执行 XPath 查询和计算。

XSLT

对 XML 文档执行 XSL 转换。

Diff 运算

根据比较要求必须是快速还是精确,可以将 Diff 运算配置为使用不同的比较算法。还可通过对 Diff 运算配置,使之可以根据当前比较文档的大小,自动选择使用快速比较或精确比较。

Diff 运算中包含一组用于自定义 XML 比较的选项。下表对这些选项进行说明:

选项

说明

IgnoreComments

该值用于指定是否比较注释节点。

IgnoreNamespaces

该值用于指定是否将元素的命名空间统一资源标识符 (URI) 与其属性名称相比较。如果将此选项设置为 true,则名称部分相同但命名空间不同的两个元素将被视为相同元素。

IgnorePrefixes

该值用于指定是否比较元素前缀和属性名称。如果将此选项设置为 true,则本地名称相同但命名空间 URI 和前缀不同的两个元素将被视为相同元素。

IgnoreXMLDeclaration

该值用于指定是否比较 XML 声明。

IgnoreOrderOfChildElements

该值用于指定是否比较子元素顺序。如果将此选项设置为 true,则在同级组成的列表中仅位置不同的子元素将被视为相同元素。

IgnoreWhiteSpaces

该值用于指定是否比较空格。

IgnoreProcessingInstructions

该值用于指定是否比较处理指令。

IgnoreDTD

该值用于指定是否忽略 DTD。

Merge 运算

使用 XPath 语句标识源文档中的合并位置时,此语句应返回一个节点。如果该语句返回多个节点,则仅使用第一个节点。第二个文档的内容在 XPath 查询返回的第一个节点下合并。

XPath 运算

可将 XPath 运算配置为使用不同类型的 XPath 功能。

  • 选择“计算”选项,以实现各种 XPath 函数,如 sum()。

  • 选择**“结点列表”**选项,将选定节点以 XML 片段方式返回。

  • 选择“值”选项,以返回所有选定节点的内部文本值,这些值串联为一个字符串。

Validation 运算

可以将 Validation 运算配置为使用文档类型定义 (DTD) 架构或 XML 架构定义 (XSD) 架构。

XML 文档编码

XML 任务仅支持合并 Unicode 文档。这表示 XML 任务只能对采用 Unicode 编码的文档应用 Merge 运算。使用其他编码将导致 XML 任务失败。

注意注意

Diff 和 Patch 运算中包含一个选项,可以忽略第二操作数 XML 数据中的 XML 声明,这就使得在这些运算中能够使用具有其他编码的文档。

若要验证是否可以使用 XML 文档,请查看 XML 声明。该声明必须显式指定 UTF-8(即 8 位 Unicode 编码)。

下面的标记显示 Unicode 8 位编码。

<?xml version="1.0" encoding="UTF-8"?>

XML 任务可用的自定义日志记录消息

下表介绍了 XML 任务的自定义日志项。有关详细信息,请参阅在包中实现日志记录日志记录的自定义消息

日志项

说明

XMLOperation

提供任务所执行的操作的相关信息

配置 XML 任务

可以通过 SSIS 设计器或以编程方式来设置属性。

有关可以在 SSIS 设计器中设置的属性的详细信息,请单击下列主题之一:

有关在 SSIS 设计器中如何设置属性的详细信息,请单击下列主题:

以编程方式配置 XML 任务

有关以编程方式设置这些属性的详细信息,请单击以下主题:

外部资源

Integration Services 图标(小) 使 Integration Services 保持最新

若要从 Microsoft 获得最新的下载内容、文章、示例和视频,以及从社区获得所选解决方案,请访问 MSDN 上的 Integration Services 页:


若要获得有关这些更新的自动通知,请订阅该页上提供的 RSS 源。