次の方法で共有


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
フィールドは 1 つの属性に対応します。


フィールドの localName/ns は、XML 属性名と名前空間として使用されます。


指定しない限り、 属性は XML に含まれている必要があります。
WS_FIELD_OPTIONALが指定されている場合、 属性
は XML に表示する必要はありません。 省略可能で、省略できない場合
が存在する場合、フィールドは WS_DEFAULT_VALUE に設定されます。
既定値が指定されていない場合は 0。



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
フィールドは 1 つの要素に対応します。


フィールドの localName/ns は、XML 要素名と名前空間として使用されます。


指定しない限り、 要素は XML に含まれている必要があります。
WS_FIELD_OPTIONALが指定されている場合、 要素
は XML に表示する必要はありません。 省略可能で、省略できない場合
が存在する場合、フィールドは WS_DEFAULT_VALUE に設定されます。
既定値が指定されていない場合は 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> &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 でない場合は、XML で 。 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>

逆シリアル化された配列内の要素の数を制限できます
NULL 以外のWS_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 が指定されていない場合、フィールドは 0 に初期化されます。


フィールド マッピングは、 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 に設定されます。
既定値が指定されていない場合は 0。



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 に表示する必要はありません。 省略可能で、なしの場合
の要素が存在する場合は、フィールドのセレクター値が に設定されます。
列挙の 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。 フィールドの localName
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>

セレクターの値は、 のフィールドのどれを示します。
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 要素
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>

逆シリアル化された配列内の要素の数を制限できます
NULL 以外のWS_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 」を参照してください
詳細については、以下を参照してください。


逆シリアル化中に許可される要素の数を制限できます
NULL 以外のWS_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 の場合、制限はありません。 次に、
    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 サービスの戻り値」を参照してください)。

WS_STRUCT_DESCRIPTION内のWS_FIELD_DESCRIPTIONの順序は、WS_FIELD_DESCRIPTIONWS_FIELD_MAPPING値によって決まります。 順序の詳細については、「 WS_STRUCT_DESCRIPTION 」を参照してください。

要件

   
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
Header webservices.h