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 フィールドは 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><Struct field='1'/><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><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 でない場合は、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><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> 逆シリアル化された配列内の要素の数を制限できます 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><Struct>1</Struct><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><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 に設定されます。 既定値が指定されていない場合は 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><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 に表示する必要はありません。 省略可能で、なしの場合 の要素が存在する場合は、フィールドのセレクター値が に設定されます。 列挙の 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。 フィールドの 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><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 要素 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> 逆シリアル化された配列内の要素の数を制限できます 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 = ...; // { '<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 」を参照してください 詳細については、以下を参照してください。 逆シリアル化中に許可される要素の数を制限できます 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<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 サービスの戻り値」を参照してください)。
WS_STRUCT_DESCRIPTION内のWS_FIELD_DESCRIPTIONの順序は、WS_FIELD_DESCRIPTIONのWS_FIELD_MAPPING値によって決まります。 順序の詳細については、「 WS_STRUCT_DESCRIPTION 」を参照してください。
要件
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
Header | webservices.h |
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示