Поделиться через


перечисление 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 = &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-элемента.
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>&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>

Количество элементов в десериализованном массиве может быть ограничено
путем указания структуры 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>&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 .
значение , чтобы инициализировать поле в при десериализации поля. Если значение по умолчанию
значение не указано, то поле будет инициализировано нулевым значением.


Сопоставление полей можно использовать только с 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. Имя_локального поля
и 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>&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. Имя_локального поля
и 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>&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>

Значение селектора указывает, какие из полей
объединение задано. Другие поля остаются неинициализированными, если
значение десериализуется. Приложение должно всегда
Обратитесь к значению селектора, чтобы убедиться, что поле элемента
объединение доступно.
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>&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>

Количество элементов в десериализованном массиве может быть ограничено
путем указания структуры 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 = ...; // { '&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 для
дополнительные сведения.


Количество элементов, разрешенное во время десериализации, может быть ограничено
путем указания структуры 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&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.


Поле ns WS_FIELD_DESCRIPTION ограничивает
пространство имен разрешенных атрибутов следующим образом:

  • Если поле 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-содержимое, не сопоставленное явным образом, приведет к возврату 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