WS_FIELD_MAPPING 枚举 (webservices.h)

指定结构字段在 XML 中的表示方式。 这在 WS_FIELD_DESCRIPTION中使用。

语法

typedef enum {
  WS_TYPE_ATTRIBUTE_FIELD_MAPPING = 0,
  WS_ATTRIBUTE_FIELD_MAPPING = 1,
  WS_ELEMENT_FIELD_MAPPING = 2,
  WS_REPEATING_ELEMENT_FIELD_MAPPING = 3,
  WS_TEXT_FIELD_MAPPING = 4,
  WS_NO_FIELD_MAPPING = 5,
  WS_XML_ATTRIBUTE_FIELD_MAPPING = 6,
  WS_ELEMENT_CHOICE_FIELD_MAPPING = 7,
  WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING = 8,
  WS_ANY_ELEMENT_FIELD_MAPPING = 9,
  WS_REPEATING_ANY_ELEMENT_FIELD_MAPPING = 10,
  WS_ANY_CONTENT_FIELD_MAPPING = 11,
  WS_ANY_ATTRIBUTES_FIELD_MAPPING = 12
} WS_FIELD_MAPPING;

常量

 
WS_TYPE_ATTRIBUTE_FIELD_MAPPING
值: 0
字段对应于 xsi:type) (XML 类型属性。 此
只能与 WS_DESCRIPTION_TYPE 一起使用。



syntax<br><br>struct Base<br>{<br> WS_STRUCT_DESCRIPTION* type;<br><br> // ... base fields ...<br>};<br><br>struct Derived : Base<br>{<br> // ... derived fields ...<br>};<br><br>struct Struct<br>{<br> Base* field;<br>};<br><br>Derived derived;<br>derived.type = &amp;DerivedStructDescription;<br>Struct s;<br>s.field = &amp;derived;<br><br>&lt;Struct&gt;<br> &lt;field xsi:type='Derived'&gt;<br> // ... base fields ...<br> // ... derived fields ...<br> &lt;/field&gt;<br>&lt;/Struct&gt;<br><br>

此映射不支持指定 WS_DEFAULT_VALUE
WS_ATTRIBUTE_FIELD_MAPPING
值:1
字段对应于单个属性。


字段的 localName/ns 用作 XML 属性名称和命名空间。


除非指定,否则 属性必须出现在 XML 中。
如果指定 了WS_FIELD_OPTIONAL ,则属性
不需要显示在 XML 中。 如果可选且不是
则字段设置为 WS_DEFAULT_VALUE
如果未指定默认值,则为零。



syntax<br><br>struct Struct<br>{<br> int field;<br>};<br><br>Struct s;<br>s.field = 1;<br><br>&lt;Struct field='1'/&gt;<br><br>

若要放弃属性,应使用 WS_VOID_TYPE
在这种情况下,结构中不需要字段。
有关详细信息 ,请参阅WS_VOID_TYPE
WS_ELEMENT_FIELD_MAPPING
值: 2
字段对应于单个元素。


字段的 localName/ns 用作 XML 元素名称和命名空间。


除非指定,否则 元素必须出现在 XML 中。
如果指定 了WS_FIELD_OPTIONAL ,则元素
不需要显示在 XML 中。 如果可选且不是
则字段设置为 WS_DEFAULT_VALUE
如果未指定默认值,则为零。



syntax<br><br>struct Struct<br>{<br> int field;<br>};<br><br>Struct s;<br>s.field = 1;<br><br>&lt;Struct&gt;<br> &lt;field&gt;1&lt;/field&gt;<br>&lt;/Struct&gt;<br><br>

若要放弃元素,应使用 WS_VOID_TYPE
在这种情况下,结构中不需要字段。
有关详细信息 ,请参阅WS_VOID_TYPE
WS_REPEATING_ELEMENT_FIELD_MAPPING
值: 3
字段对应于一组重复的元素。


字段的 localName/ns 用作 XML 元素
要用于包装元素 (元素的名称和命名空间
这是) 的重复元素的父级。 如果没有包装器
元素是必需的,则 localName/ns 应为 NULL


如果已指定包装元素,则必须显示包装元素
如果重复元素计数不为 0,则为 。 WS_DEFAULT_VALUE可能
未为此字段映射指定。


itemLocalName 和 itemN 用作 XML 元素
重复元素的名称和命名空间。



syntax<br><br>struct Struct<br>{<br> int* field;<br> ULONG fieldCount;<br>};<br><br>int values[] = { 1, 2 };<br>Struct s;<br>s.field = values;<br>s.fieldCount = 2;<br><br>// with wrapper element specified<br>&lt;Struct&gt;<br> &lt;field&gt;<br> &lt;item&gt;1&lt;/item&gt;<br> &lt;item&gt;2&lt;/item&gt;<br> &lt;/field&gt;<br>&lt;/Struct&gt;<br><br>// with no wrapper element specified<br>&lt;Struct&gt;<br> &lt;item&gt;1&lt;/item&gt;<br> &lt;item&gt;2&lt;/item&gt;<br>&lt;/Struct&gt;<br>

可约束反序列化数组中的元素数
通过指定非 NULLWS_ITEM_RANGE 结构
WS_FIELD_DESCRIPTION的一部分。
WS_TEXT_FIELD_MAPPING
值: 4
字段对应于 元素的整个字符内容。
使用此映射时,不允许使用子元素。


此映射通常与 WS_ATTRIBUTE_FIELD_MAPPING 一起使用,以定义一个结构,该结构映射到包含某些文本和属性的元素, (但没有
子元素) 。



syntax<br><br>struct Struct<br>{<br> int field;<br>};<br><br>Struct s;<br>s.field = 1;<br><br>&lt;Struct&gt;1&lt;/Struct&gt;<br><br>

此映射不支持指定 WS_DEFAULT_VALUE
WS_NO_FIELD_MAPPING
值: 5
字段既不是序列化的,也不是反序列化的。


序列化时,将忽略 字段,并初始化为
反序列化时的默认值。


如果字段映射到 (WS_INT32_TYPE) 等 现有类型之一,
然后可以指定类型。 如果字段的类型不是
现有类型 ,WS_VOID_TYPE可用于 指定
任意类型和大小的字段。


可以指定 WS_DEFAULT_VALUE 来提供值
反序列化字段时,将字段初始化为 。 如果为默认值
未指定 value,则字段将初始化为零。


字段映射只能与 WS_FIELD_OPTIONS 值 0 一起使用。



syntax<br><br>struct Struct<br>{<br> int field;<br>};<br><br>Struct s;<br>s.field = 1;<br><br>&lt;Struct/&gt;<br><br>
WS_XML_ATTRIBUTE_FIELD_MAPPING
值: 6
字段对应于保留的 xml 属性 (,如 xml:lang) 。


字段的 localName 用于标识 XML 属性名称。


除非指定 了WS_FIELD_OPTIONAL ,否则属性必须
显示在 XML 中。 如果指定 了WS_FIELD_OPTIONAL
则不需要属性出现在 XML 中。 如果可选且不是
则字段设置为 WS_DEFAULT_VALUE
如果未指定默认值,则为零。



syntax<br><br>struct Struct<br>{<br> WS_STRING field;<br>};<br><br>Struct s;<br>s.field = ...; // 'us-en';<br><br>// Example of xml:lang<br>&lt;Struct xml:lang='us-en'/&gt;<br><br>s.field = ...; // 'true'<br><br>// Example of xml:space<br>&lt;Struct xml:space='true'&gt;<br>
WS_ELEMENT_CHOICE_FIELD_MAPPING
值: 7
字段对应于一组可能的选项
位置。 每个元素映射到联合的字段之一。
联合的每个字段都有相应的枚举值,即
用于标识当前选项。



syntax<br><br>// Enumeration of choices of different values<br>enum Choice<br>{<br> ChoiceA = 10,<br> ChoiceB = 20,<br> None = 0,<br>};<br><br>// Struct containing union of values, and enum 'selector'<br>struct Struct<br>{<br> Choice choice;<br> union<br> {<br> int a; // valid when choice is ChoiceA<br> WS_STRING b; // valid when choice is ChoiceB<br> } value;<br>}; <br><br>

此字段映射必须与 WS_UNION_TYPE 一起使用。
元素选项的名称和命名空间在 中指定
WS_UNION_DESCRIPTION。 字段的 localName
和 ns 应为 NULL


除非指定 WS_FIELD_OPTIONAL ,否则
元素必须出现在 XML 中。 如果指定 了WS_FIELD_OPTIONAL
则不需要在 XML 中显示任何元素。 如果可选且无
元素存在时,字段的选择器值设置为
枚举 (的 noneEnumValue 字段中指定的无值
WS_UNION_DESCRIPTION) 。 由于 nonEnumValue
用作默认值,此映射值不支持
指定 WS_DEFAULT_VALUE



syntax<br><br>Struct s;<br>s.choice = ChoiceA;<br>s.value.a = 123;<br><br>&lt;Struct&gt;<br> &lt;choiceA&gt;123&lt;/choiceA&gt;<br>&lt;/Struct&gt;<br><br>Struct S;<br>s.choice = ChoiceB;<br>s.value.b = ...; // 'hello'<br><br>&lt;Struct&gt;<br> &lt;choiceB&gt;hello&lt;/choiceB&gt;<br>&lt;/Struct&gt;<br><br>Struct S;<br>s.choice = None;<br><br>&lt;Struct&gt;<br>&lt;/Struct&gt; <br>

字段对应于一组可能的选择
位置。 每个元素映射到联合的一个字段。
联合的每个字段都有相应的枚举值,即
用于标识当前选择。



syntax<br><br>// Enumeration of choices of different values<br>enum Choice<br>{<br> ChoiceA = 10,<br> ChoiceB = 20,<br> None = 0,<br>};<br><br>// Struct containing union of values, and enum &amp;quot;selector&amp;quot;<br>struct Struct<br>{<br> Choice choice;<br> union<br> {<br> int a; // valid when choice is ChoiceA<br> WS_STRING b; // valid when choice is ChoiceB<br> } value;<br>};<br>

此字段映射必须与 WS_UNION_TYPE 一起使用。
元素选项的名称和命名空间在 中指定
WS_UNION_DESCRIPTION。 字段的 localName
和 ns 应为 NULL


除非指定 了WS_FIELD_OPTIONAL ,否则其中一个
元素必须出现在 XML 中。 如果指定 了WS_FIELD_OPTIONAL
则不需要在 XML 中显示任何元素。 如果可选,则为无
元素存在时,字段的选择器值设置为
枚举 (的 noneEnumValue 字段中指定的无值
WS_UNION_DESCRIPTION) 。 由于 nonEnumValue
用作默认值,此映射值不支持
指定 WS_DEFAULT_VALUE



syntax<br><br>Struct s;<br>s.choice = ChoiceA;<br>s.value.a = 123;<br><br>&lt;Struct&gt;<br> &lt;choiceA&gt;123&lt;/choiceA&gt;<br>&lt;/Struct&gt;<br><br>Struct S;<br>s.choice = ChoiceB;<br>s.value.b = ...; // &amp;quot;hello&amp;quot;<br><br>&lt;Struct&gt;<br> &lt;choiceB&gt;hello&lt;/choiceB&gt;<br>&lt;/Struct&gt;<br><br>Struct S;<br>s.choice = None;<br><br>&lt;Struct&gt;<br>&lt;/Struct&gt;<br>

选择器值指示 的哪些字段
设置 union。 其他字段在以下情况下保持未初始化
值已反序列化。 应用程序应始终
请查阅选择器值以验证 的字段
union 是可访问的。
WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING
值: 8
字段对应于一组重复的元素选项。


每个项都由具有选择器值的联合表示。
此映射必须与 WS_UNION_TYPE 一起使用。


字段的 localName/ns 用作 XML 元素
用于包装元素 (元素的名称和命名空间
它是) 重复元素的父元素。 如果没有包装器
需要元素,则两个 localName/ns 都应为 NULL


如果已指定包装元素,则必须显示包装元素
如果重复的元素计数不是 0,则为 XML。 WS_DEFAULT_VALUE可能
未为此字段映射指定。


itemLocalName 和 itemNs 字段必须为 NULL。 XML 元素
名称和命名空间在 WS_UNION_DESCRIPTION中定义。



syntax<br><br>struct Struct2<br>{<br> Struct* field; // see WS_UNION_DESCRIPTION for definition of Struct<br> ULONG fieldCount;<br>};<br><br>StructType values[2];<br>values[0].choice = ChoiceA;<br>values[0].values.a = 123;<br>values[1].choice = ChoiceB;<br>values[1].values.b = ...; // hello<br><br>Struct2 s2;<br>s2.field = values;<br>s2.fieldCount = 2;<br><br>// with wrapper element specified<br>&lt;Struct2&gt;<br> &lt;field&gt;<br> &lt;item&gt;123&lt;/item&gt;<br> &lt;item&gt;hello&lt;/item&gt;<br> &lt;/field&gt;<br>&lt;/Struct2&gt;<br><br>// with no wrapper element specified<br>&lt;Struct2&gt;<br> &lt;item&gt;123&lt;/item&gt;<br> &lt;item&gt;hello&lt;/item&gt;<br>&lt;/Struct2&gt;<br><br>

可限制反序列化数组中的元素数
通过指定非 NULLWS_ITEM_RANGE 结构
WS_FIELD_DESCRIPTION的一部分。
WS_ANY_ELEMENT_FIELD_MAPPING
值: 9
WS_REPEATING_ANY_ELEMENT_FIELD_MAPPING
值: 10
字段用于放弃或存储元素序列
具有任何名称和命名空间。


若要存储元素,应WS_XML_BUFFER_TYPE
被使用。 这对应于 WS_XML_BUFFER的数组,
如下所示:



syntax<br><br>struct Struct<br>{<br> // ... known fields ...<br> WS_XML_BUFFER** fields;<br> ULONG fieldCount;<br> // ... known fields ...<br>};<br><br>Struct s;<br>s.fields = ...; // { '&lt;unknown1/&gt;', '&lt;unknown2/&gt;'; }<br>s.fieldCount = 2;<br><br>&lt;Struct&gt;<br> ... known fields ...<br> &lt;unknown1/&gt;<br> &lt;unknown2/&gt;<br> ... known fields ...<br>&lt;/Struct&gt;<br><br>

若要放弃元素,应使用 WS_VOID_TYPE
在这种情况下,结构中不需要字段。 请参阅 WS_VOID_TYPE 了解
更多信息。


可以限制反序列化期间允许的元素数
通过指定非 NULLWS_ITEM_RANGE 结构
WS_FIELD_DESCRIPTION的一部分。


此映射不支持指定 WS_DEFAULT_VALUE
WS_ANY_CONTENT_FIELD_MAPPING
值: 11
字段用于放弃或存储任何剩余内容
(结束前发生的任何文本或元素) 混合
元素的 。


若要存储元素,应WS_XML_BUFFER_TYPE
使用,如下所示:



syntax<br><br>struct Struct<br>{<br> // ... known fields ...<br> WS_XML_BUFFER* field;<br>};<br><br>Struct s;<br>s.field = ...; // 'text1&lt;unknown1/&gt;text2&lt;unknown2/&gt;'<br><br>&lt;Struct&gt;<br> ... known fields ...<br> text1<br> &lt;unknown1/&gt;<br> text2<br> &lt;unknown2/&gt;<br>&lt;/Struct&gt;<br><br>

若要放弃元素,应使用 WS_VOID_TYPE
在这种情况下,结构中不需要字段。
有关详细信息 ,请参阅WS_VOID_TYPE


此映射不支持指定 WS_DEFAULT_VALUE
WS_ANY_ATTRIBUTES_FIELD_MAPPING
值: 12
字段用于放弃或存储任何不是的属性
使用其他 WS_FIELD_MAPPING 值映射。


如果未指定此字段映射,则未映射的属性
反序列化时将导致错误。


WS_FIELD_DESCRIPTION的名称字段必须为 NULL


WS_FIELD_DESCRIPTION的 ns 字段限制
允许的属性的命名空间,如下所示:

  • 如果 ns 字段为 NULL,则没有限制。 The
    不得在此中设置WS_FIELD_OTHER_NAMESPACE字段选项
    情况 下。

  • 如果 ns 字段为非 NULL,则字段选项
    为字段设置WS_FIELD_OTHER_NAMESPACE,则
    特性的命名空间必须与 ns 字段中指定的命名空间相同。

  • 如果 ns 字段为非 NULL,则字段选项
    字段设置WS_FIELD_OTHER_NAMESPACE,然后
    特性的命名空间必须与指定的命名空间不同
    在 ns 字段中。




若要存储属性, WS_ANY_ATTRIBUTES_TYPE 应为
和使用方式。 这对应于 WS_ANY_ATTRIBUTES ,如下所示:



syntax<br><br>struct Struct<br>{<br> // ... known attributes ...<br> WS_ANY_ATTRIBUTES field;<br> // ... other content ...<br>};<br><br>Struct s;<br>s.field = ...; // 'unknown'/'http://example.com'/'value'<br><br>&lt;Struct <br> ... known attributes ... <br> xmlns:a='http://example.com' a:unknown='value'&gt;<br><br> ... other content ...<br>&lt;/Struct&gt;<br><br>

若要放弃未映射的属性,应使用 WS_VOID_TYPE
在这种情况下,结构中不需要字段。
有关详细信息 ,请参阅WS_VOID_TYPE


此映射不支持指定 WS_DEFAULT_VALUE

注解

WS_FIELD_MAPPING指示 XML 内容的不同部分如何映射到结构的字段。 例如, WS_ELEMENT_FIELD_MAPPING 可用于映射子元素的值, WS_ATTRIBUTE_FIELD_MAPPING 可用于映射属性。 反序列化 XML 时,任何未显式映射的 XML 内容将导致返回 WS_E_INVALID_FORMAT 。 (请参阅 Windows Web Services 返回值。)

WS_STRUCT_DESCRIPTION中WS_FIELD_DESCRIPTION的顺序由WS_FIELD_DESCRIPTION的WS_FIELD_MAPPING决定。 有关订购的详细信息,请参阅 WS_STRUCT_DESCRIPTION

要求

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