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,则返回所有生成的字节,并且
缓冲区在调用 WsSetOutputWsFreeWriter 之前有效。


如果编写器使用 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 结构。 This is
当已知生成的 xml 数据大小的上限,或者调用方想要拥有时非常有用
放置字节的缓冲区。


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


此缓冲区可能显示为属性 WS_XML_WRITER_PROPERTY_BUFFERS或WS_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
控制 WsCopyNode 如何复制不带内容的元素的 BOOL


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


二进制编码不支持空元素。 将 WsCopyNode 与 配合使用时
使用二进制编码此属性的编写器无论哪种方式都不起作用。 所有空元素都是
转换为不带内容的元素。


默认情况下,此属性为 FALSE


对于输入 XML 字符串,如下所示:



syntax<br><br>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;container&gt;<br> &lt;emptyElement /&gt;<br> &lt;emptyElementWithEndTag&gt;&lt;/emptyElementWithEndTag&gt;<br>&lt;/container&gt;<br>

如果此属性为 FALSE则 WsCopyNode 将生成以下 xml:




syntax<br><br>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;container&gt;<br> &lt;emptyElement /&gt;<br> &lt;emptyElementWithEndTag&gt;&lt;/emptyElementWithEndTag&gt;<br>&lt;/container&gt;<br>

如果此属性为 TRUE则 WsCopyNode 将生成以下 xml:



syntax<br><br>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;container&gt;<br> &lt;emptyElement /&gt;<br> &lt;emptyElementWithEndTag /&gt;<br>&lt;/container&gt;<br>
WS_XML_WRITER_PROPERTY_EMIT_UNCOMPRESSED_EMPTY_ELEMENTS
值: 18
Windows 8或更高版本:控制如何发出空元素的 BOOL

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


syntax<br>&lt;emptyElement /&gt;<br>

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


xml<br><emptyElement></emptyElement><br><br>


默认值为 FALSE

要求

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