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 = &DerivedStructDescription;<br>Struct s;<br>s.field = &derived;<br><br><Struct><br> <field xsi:type='Derived'><br> // ... base fields ...<br> // ... derived fields ...<br> </field><br></Struct><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><Struct field='1'/><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><Struct><br> <field>1</field><br></Struct><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><Struct><br> <field><br> <item>1</item><br> <item>2</item><br> </field><br></Struct><br><br>// with no wrapper element specified<br><Struct><br> <item>1</item><br> <item>2</item><br></Struct><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><Struct>1</Struct><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><Struct/><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><Struct xml:lang='us-en'/><br><br>s.field = ...; // 'true'<br><br>// Example of xml:space<br><Struct xml:space='true'><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><Struct><br> <choiceA>123</choiceA><br></Struct><br><br>Struct S;<br>s.choice = ChoiceB;<br>s.value.b = ...; // 'hello'<br><br><Struct><br> <choiceB>hello</choiceB><br></Struct><br><br>Struct S;<br>s.choice = None;<br><br><Struct><br></Struct> <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 &quot;selector&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><Struct><br> <choiceA>123</choiceA><br></Struct><br><br>Struct S;<br>s.choice = ChoiceB;<br>s.value.b = ...; // &quot;hello&quot;<br><br><Struct><br> <choiceB>hello</choiceB><br></Struct><br><br>Struct S;<br>s.choice = None;<br><br><Struct><br></Struct><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><Struct2><br> <field><br> <item>123</item><br> <item>hello</item><br> </field><br></Struct2><br><br>// with no wrapper element specified<br><Struct2><br> <item>123</item><br> <item>hello</item><br></Struct2><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 = ...; // { '<unknown1/>', '<unknown2/>'; }<br>s.fieldCount = 2;<br><br><Struct><br> ... known fields ...<br> <unknown1/><br> <unknown2/><br> ... known fields ...<br></Struct><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<unknown1/>text2<unknown2/>'<br><br><Struct><br> ... known fields ...<br> text1<br> <unknown1/><br> text2<br> <unknown2/><br></Struct><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 字段限制 允许的属性的命名空间,如下所示:
若要存储属性, 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><Struct <br> ... known attributes ... <br> xmlns:a='http://example.com' a:unknown='value'><br><br> ... other content ...<br></Struct><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 |
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈