перечисление 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 Поле соответствует атрибуту типа XML (xsi:type). This может использоваться только с 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-элемента. name и пространство имен, используемые для элемента-оболочки (элемент который является родительским для повторяющихся элементов). Если нет оболочки необходимо использовать элемент , то оба значения localName/ns должны иметь значение NULL. Если указан элемент-оболочка, должен появиться элемент-оболочка. в XML, если число повторяющихся элементов не равно 0. WS_DEFAULT_VALUE может не указывается для этого сопоставления полей. ItemLocalName и itemNs используются в качестве XML-элемента. name и пространство имен для повторяющегося элемента. 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> Количество элементов в десериализованном массиве может быть ограничено путем указания структуры WS_ITEM_RANGE, отличной отNULL; часть 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 . значение , чтобы инициализировать поле в при десериализации поля. Если значение по умолчанию значение не указано, то поле будет инициализировано нулевым значением. Сопоставление полей можно использовать только с 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. Имя_локального поля и ns должны иметь значение NULL. Если WS_FIELD_OPTIONAL не указан, один из элементы должны отображаться в XML. Если указан WS_FIELD_OPTIONAL , тогда ни один из элементов не должен отображаться в XML. Если необязательный параметр и нет элементы присутствуют, после чего селектору поля присваивается значение значение none перечисления (как указано в поле 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. Имя_локального поля и ns должны иметь значение NULL. Если WS_FIELD_OPTIONAL не указан, один из элементы должны отображаться в XML. Если указан WS_FIELD_OPTIONAL , тогда ни один из элементов не должен отображаться в XML. Если необязательный параметр и нет элементы присутствуют, после чего селектору поля присваивается значение значение none перечисления (как указано в поле 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> Значение селектора указывает, какие из полей объединение задано. Другие поля остаются неинициализированными, если значение десериализуется. Приложение должно всегда Обратитесь к значению селектора, чтобы убедиться, что поле элемента объединение доступно. |
WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING Значение: 8 Поле соответствует повторяющимся набору вариантов элементов. Каждый элемент представлен объединением со значением селектора. Это сопоставление необходимо использовать с WS_UNION_TYPE. LocalName/ns поля используются в качестве XML-элемента. name и пространство имен, используемые для элемента-оболочки (элемент который является родительским для повторяющихся элементов). Если нет оболочки необходимо использовать элемент , то оба значения localName/ns должны иметь значение NULL. Если указан элемент-оболочка, должен появиться элемент-оболочка. в XML, если число повторяющихся элементов не равно 0. WS_DEFAULT_VALUE может не указывается для этого сопоставления полей. Поля itemLocalName и itemNs должны иметь значение NULL. XML-элемент name и namespace определяются в 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> Количество элементов в десериализованном массиве может быть ограничено путем указания структуры WS_ITEM_RANGE, отличной отNULL; часть 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 для дополнительные сведения. Количество элементов, разрешенное во время десериализации, может быть ограничено путем указания структуры WS_ITEM_RANGE, отличной отNULL; часть 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. Поле ns WS_FIELD_DESCRIPTION ограничивает пространство имен разрешенных атрибутов следующим образом:
Чтобы сохранить атрибуты, 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-содержимое, не сопоставленное явным образом, приведет к возврату WS_E_INVALID_FORMAT при десериализации XML. (См. раздел Возвращаемые значения веб-служб Windows.)
Порядок WS_FIELD_DESCRIPTION в WS_STRUCT_DESCRIPTION определяется WS_FIELD_MAPPING значением WS_FIELD_DESCRIPTION. Дополнительные сведения о заказе см. в разделе WS_STRUCT_DESCRIPTION .
Требования
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Верхняя часть | webservices.h |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по