WS_XML_WRITER_PROPERTY_ID枚举 (webservices.h)

每个 xml 编写器属性由 ID 标识,并具有关联的值。 此枚举在 WS_XML_WRITER_PROPERTY 结构中使用,该结构用作 WsCreateWriterWsSetOutputWsSetOutputToBufferWsWriteXmlBufferToBytes的参数。 它还直接用作参数来 WsGetWriterProperty

语法

typedef enum {
  WS_XML_WRITER_PROPERTY_MAX_DEPTH = 0,
  WS_XML_WRITER_PROPERTY_ALLOW_FRAGMENT = 1,
  WS_XML_WRITER_PROPERTY_MAX_ATTRIBUTES = 2,
  WS_XML_WRITER_PROPERTY_WRITE_DECLARATION = 3,
  WS_XML_WRITER_PROPERTY_INDENT = 4,
  WS_XML_WRITER_PROPERTY_BUFFER_TRIM_SIZE = 5,
  WS_XML_WRITER_PROPERTY_CHARSET = 6,
  WS_XML_WRITER_PROPERTY_BUFFERS = 7,
  WS_XML_WRITER_PROPERTY_BUFFER_MAX_SIZE = 8,
  WS_XML_WRITER_PROPERTY_BYTES = 9,
  WS_XML_WRITER_PROPERTY_IN_ATTRIBUTE = 10,
  WS_XML_WRITER_PROPERTY_MAX_MIME_PARTS_BUFFER_SIZE = 11,
  WS_XML_WRITER_PROPERTY_INITIAL_BUFFER = 12,
  WS_XML_WRITER_PROPERTY_ALLOW_INVALID_CHARACTER_REFERENCES = 13,
  WS_XML_WRITER_PROPERTY_MAX_NAMESPACES = 14,
  WS_XML_WRITER_PROPERTY_BYTES_WRITTEN = 15,
  WS_XML_WRITER_PROPERTY_BYTES_TO_CLOSE = 16,
  WS_XML_WRITER_PROPERTY_COMPRESS_EMPTY_ELEMENTS = 17,
  WS_XML_WRITER_PROPERTY_EMIT_UNCOMPRESSED_EMPTY_ELEMENTS = 18
} WS_XML_WRITER_PROPERTY_ID;

常数

 
WS_XML_WRITER_PROPERTY_MAX_DEPTH
值:0
一个 ULONG,指定编写器将允许的文档的最大深度。

深度由嵌套起始元素的数量在任何时间点测量。

深度为 0 可防止写入任何起始元素。

此属性默认为 32。
WS_XML_WRITER_PROPERTY_ALLOW_FRAGMENT
值:1
一个 WS_XML_WRITER_MTOM_ENCODING 结构,指定编写器是否允许文档顶层的多个元素和非空白。 此属性
不能设置为具有 WS_XML_WRITER_MTOM_ENCODING的 true

此属性默认为 FALSE
WS_XML_WRITER_PROPERTY_MAX_ATTRIBUTES
值:2
指定 ULONG
编写器将允许对元素的最大属性数。

此属性默认为 128。
WS_XML_WRITER_PROPERTY_WRITE_DECLARATION
值:3
一个 BOOL,指定编写器是否应在文档开头发出适当的 xml 声明。

此属性默认为 FALSE
WS_XML_WRITER_PROPERTY_INDENT
值:4
一个 ULONG,指定应使用多少空格来设置 xml 格式。 如果缩进为零,则不会发生任何格式设置。

此属性默认为 0。
WS_XML_WRITER_PROPERTY_BUFFER_TRIM_SIZE
值:5
指定以下项之一的 ULONG

如果编写器正在使用 WS_XML_WRITER_BUFFER_OUTPUT,则此属性是最大字节数
编写器将保留对 WsSetOutput 的调用,以便缓冲输出。

如果编写器正在使用 WS_XML_WRITER_STREAM_OUTPUT,则此属性是最大字节数
编写器将保留对 WsSetOutputWsFlushWriter 的调用
缓冲输出的用途。

使用 WsSetOutputToBuffer指定此属性时,此属性不起作用。

此属性默认为 4096。
WS_XML_WRITER_PROPERTY_CHARSET
值:6
WS_CHARSET
返回编写器用于对文档进行编码的字符集。 此值仅适用于
文本文档。
WS_XML_WRITER_PROPERTY_BUFFERS
值:7
WS_BUFFERS 结构
返回一组包含生成的 xml 字节的缓冲区。

如果编写器正在使用 WS_XML_WRITER_BUFFER_OUTPUT,则返回所有生成的字节,并且
缓冲区在 WsSetOutput调用 WsFreeWriter 之前有效。

如果编写器正在使用 WS_XML_WRITER_MTOM_ENCODING,则不能有打开的元素。
支持 MIME 部件将生成并包含在返回的缓冲区中。 完成此操作后
发生此情况时,尝试进一步写入 xml 文档的任何 API 都将返回 WS_E_INVALID_OPERATION
(请参阅 Windows Web Services 返回值。)

使用 WS_XML_WRITER_STREAM_OUTPUT时此属性不可用。

此属性在设置为 WS_XML_BUFFER的编写器上不可用。

这可能比使用 WS_XML_WRITER_PROPERTY_BYTES 更方便,但效率更高,因为
编写器不必将构成文档的缓冲区连接到单个缓冲区中。
WS_XML_WRITER_PROPERTY_BUFFER_MAX_SIZE
值:8
ULONG
指定编写器将缓冲的最大字节数。

如果编写器正在使用 WS_XML_WRITER_BUFFER_OUTPUT,则这是最大数目
将缓冲整个文档的字节。 调用 WsFlushWriter 不起作用。

如果编写器正在使用 WS_XML_WRITER_STREAM_OUTPUT,则这是最大值
将在 WsFlushWriter 调用之间缓冲的数据。

使用 WsSetOutputToBuffer指定此属性时,此属性不起作用。
WS_XML_WRITER_PROPERTY_BYTES
值:9
WS_BUFFERS 结构
返回包含生成的 xml 字节的单个缓冲区。

如果编写器正在使用 WS_XML_WRITER_BUFFER_OUTPUT,则返回所有生成的字节,并返回
缓冲区在 调用 WsSetOutputWsFreeWriter 之前有效。

如果编写器正在使用 WS_XML_WRITER_MTOM_ENCODING,则不能有打开的元素。
支持 MIME 部件将生成并包含在返回的缓冲区中。 完成此操作后
发生此情况时,尝试进一步写入 xml 文档的任何 API 都将返回 WS_E_INVALID_OPERATION

使用 WS_XML_WRITER_STREAM_OUTPUT时此属性不可用。

此属性在设置为 WS_XML_BUFFER的编写器上不可用。

这可能比使用 WS_XML_WRITER_PROPERTY_BUFFERS 更方便,但效率更低,因为
编写器可能需要将构成文档的缓冲区连接到单个缓冲区中。
WS_XML_WRITER_PROPERTY_IN_ATTRIBUTE
值:10
BOOL
指示已调用 WsWriteStartAttribute 并且编写器为
定位在属性内容上。
WS_XML_WRITER_PROPERTY_MAX_MIME_PARTS_BUFFER_SIZE
值:11
WS_XML_WRITER_MTOM_ENCODING一起使用的 ULONG。 这指定最大数据量
将出于编写 MIME 部件的目的缓冲。 WsWriteBytes
WsPullBytes 需要缓冲数据才能以单独的 MIME 部分的形式发出数据
遵循文档,可用于限制缓冲的量。

此属性默认为 65536。
WS_XML_WRITER_PROPERTY_INITIAL_BUFFER
值:12
包含编写器可用于编码 xml 文档的缓冲区的 WS_BYTES 结构。 这是
当已知生成的 xml 数据大小的上限或调用方想要拥有时,很有用
放置字节的缓冲区。

如果指定的大小大于或等于 WS_XML_WRITER_PROPERTY_BUFFER_MAX_SIZE,则
编写器不会从其内部缓冲区进行分配。

此缓冲区可能显示为属性 WS_XML_WRITER_PROPERTY_BUFFERSWS_XML_WRITER_PROPERTY_BYTES返回的缓冲区之一。

调用方必须确保指定的缓冲区在编写器的生存期内有效。
WS_XML_WRITER_PROPERTY_ALLOW_INVALID_CHARACTER_REFERENCES
值:13
WS_XML_WRITER_TEXT_ENCODING一起使用的 BOOL。 将此项设置为 true 允许字符引用
XML 1.0 被视为无效的字符的字符。

将此属性设置为 TRUE 可能会影响互操作性。

此属性默认为 FALSE
WS_XML_WRITER_PROPERTY_MAX_NAMESPACES
值:14
一个 ULONG,指定可能在任何点出现在范围内的最大 xmlns 唯一声明数
编写文档时。

此属性默认为 32。
WS_XML_WRITER_PROPERTY_BYTES_WRITTEN
值:15
指定以下项之一的 ULONG

如果编写器正在使用 WS_XML_WRITER_BUFFER_OUTPUT,则此属性
返回已写入编写器中的字节数。

如果编写器正在使用 WS_XML_WRITER_STREAM_OUTPUT,则此属性
返回自上次调用以来写入器中的字节数
WsFlushWriter

如果编写器当前正在编写元素开始标记,则起始标记的大小不包括在
返回的值。

此属性不适用于使用 WsSetOutputToBuffer设置的编写器。
WS_XML_WRITER_PROPERTY_BYTES_TO_CLOSE
值:16
ULONG,返回关闭任何打开的元素所需的最大字节数。

应用程序可以使用 WS_XML_WRITER_PROPERTY_BYTES_WRITTEN
WS_XML_WRITER_PROPERTY_BYTES_TO_CLOSE 大致了解额外多少
数据可以写入文档。 执行此操作时,应用程序应考虑
正在写入的文档的编码。

此属性不适用于使用 WsSetOutputToBuffer设置的编写器。
WS_XML_WRITER_PROPERTY_COMPRESS_EMPTY_ELEMENTS
值:17
一个 BOOL,用于控制 WsCopyNode 如何 复制不含内容的元素。

当此属性设置为 FALSE时,WsCopyNode 保留是否表示每个元素
作为开始/结束标记对,或作为空元素。 如果此属性设置为 trueWsCopyNode
将不含内容的元素转换为空元素。

二进制编码不支持空元素。 使用 WsCopyNode
使用二进制编码的编写器,此属性无论哪种方式都不起作用。 所有空元素均为
转换为不含内容的元素。

默认情况下,此属性 FALSE

对于输入 XML 字符串,例如:









如果此属性 FALSEWsCopyNode 将生成以下 xml:









如果此属性 TRUEWsCopyNode 将生成以下 xml:







WS_XML_WRITER_PROPERTY_EMIT_UNCOMPRESSED_EMPTY_ELEMENTS
值:18
Windows 8 或更高版本:用于控制如何发出空元素的 BOOL

如果设置为 FALSE,则仅通过调用 WsWriteStartElementWsWriteEndElement 创建的元素将发出如下操作:





如果设置为 true ,则会发出该元素,如下所示:

xml



默认值为 false

要求

要求 价值
最低支持的客户端 Windows 7 [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
标头 webservices.h