WsStartWriterCanonicalization 函数 (webservices.h)

在指定的 XML 编写器上启动规范化。

语法

HRESULT WsStartWriterCanonicalization(
  [in]           WS_XML_WRITER                          *writer,
  [in]           WS_WRITE_CALLBACK                      writeCallback,
  [in]           void                                   *writeCallbackState,
                 const WS_XML_CANONICALIZATION_PROPERTY *properties,
  [in]           ULONG                                  propertyCount,
  [in, optional] WS_ERROR                               *error
);

参数

[in] writer

应启动规范化的 XML 编写器。

[in] writeCallback

要调用以在生成规范字节时写入规范字节的回调。 此回调将始终以同步方式调用。

[in] writeCallbackState

调用方定义的状态,在调用 WS_WRITE_CALLBACK时应传递。

properties

一个可选属性数组,用于控制规范化的执行方式。 请参阅 WS_XML_CANONICALIZATION_PROPERTY

[in] propertyCount

属性数。

[in, optional] error

指定函数失败时应存储其他错误信息的位置。

返回值

此函数可以返回其中一个值。

返回代码 说明
E_INVALIDARG
一个或多个参数无效。
WS_E_INVALID_OPERATION
由于对象的当前状态,不允许该操作。
WS_E_INVALID_FORMAT
输入数据未采用预期格式或没有预期值。

注解

规范化的使用模式是:

在此过程中,规范字节将写入指定的 writeCallback。 编写器编写的每个节点都将进行规范化。 因此,无论使用什么 API 来编写 XML,规范化和生成都可以一次性完成。 必须调用 WsEndWriterCanonicalization,以确保将所有规范化的字节写入指定的回调。

必须在调用 WsStartWriterCanonicalization 的同一深度调用 WsEndWriterCanonicalization 。 如果其他编写器 API 移动到低于 调用 WsStartWriterCanonicalization 的深度,则其他编写器 API 将返回错误。

在一对匹配的 WsStartWriterCanonicalization 和 WsEndWriterCanonicalization 调用之间对编写器调用 WsMoveWriterWsSetWriterPosition 是无效的操作。

无法嵌套对此 API 的调用。 因此,在下一次 WsStartWriterCanonicalization 调用之前,必须先调用 WsStartWriterCanonicalization ,然后再调用 WsStartWriterCanonicalization

如果未指定 WS_XML_CANONICALIZATION_ALGORITHM ,则使用 WS_EXCLUSIVE_XML_CANONICALIZATION_ALGORITHM

WS_INCLUSIVE_XML_CANONICALIZATION_ALGORITHMWS_INCLUSIVE_WITH_COMMENTS_XML_CANONICALIZATION_ALGORITHM算法只能用于整个 xml 文档。 使用这些算法调用 WsStartWriterCanonicalization 时,编写器必须定位在 WS_XML_NODE_TYPE_BOF

要求

   
最低受支持的客户端 Windows 7 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 webservices.h
Library WebServices.lib
DLL WebServices.dll